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

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

Herbert

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

Код:
#include <stdlib.h>

void main()
{
int N=10;
double* ar = (double*) malloc(N * sizeof(double));
printf("%d\n", sizeof(*ar)*N);
getchar();
free(ar);
}
 
ok всем спасибо. Думаю остановлюсь на классе vector
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab