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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Herbert, 10 фев 2009.

  1. Herbert

    Herbert Гость

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

    alexsid Гость

    создать объект массива или заюзать std::vector
     
  3. @LE}{@NDER

    @LE}{@NDER Гость

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

    Код (Text):
    #include <stdlib.h>

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

    Herbert Гость

    ok всем спасибо. Думаю остановлюсь на классе vector
     
Загрузка...

Поделиться этой страницей