Sizeof для динамического массива?

  • Автор темы Herbert
  • Дата начала
H

Herbert

#1
Доброго времени суток!
Подскажите как мне определить размерность динамического массива, созданного скажем через malloc(....) (как это в С делают) или через new (как в С++).
Дело в том, что для статических массивов отлично работает функция sizeof, а в случае дин. массива она просто возвращает размер указателя в байтах (обычно 4 байта !).
У меня есть свое дурацкое решение проблемы: можно просто сразу после создания динамического массива закатать в нулевой элемент размерность и все ок (будет всегда с тобой и никогда не потяряется), но может есть какое-то более изящное решение...?
 
@

@LE}{@NDER

#3
хех. у тебя по-любому будет размер указателя либо при разыменовании указателя размер ячейки, на которую указывает указатель.
ты же не всегда знаешь изначально размер динамического массива? поэтому и нельзя вернуть размер всего массива
разве что такой код будет работать.

Код:
#include <stdlib.h>

void main()
{
int N=10;
double* ar = (double*) malloc(N * sizeof(double));
printf("%d\n", sizeof(*ar)*N);
getchar();
free(ar);
}
 
H

Herbert

#4
ok всем спасибо. Думаю остановлюсь на классе vector