• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Herbert

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

alexsid

создать объект массива или заюзать std::vector
 
@

@LE}{@NDER

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

Код:
#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

ok всем спасибо. Думаю остановлюсь на классе vector
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!