Как узнать размерность указателя на массив - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Такой вопрос, создаю динамический массив, но т.к. это указатель, то при запросе размерности показывает размер области памяти, занимаемой указателем (4 байта) так вот вопрос, могу ли я всё таки вытянуть реальный размер массива, который создаю динамически. пример кода:
    char **s2 = new char *[10];
    for (int i=0;i<10;i++)
    {
        s2[i]=new char [20];
    }
    cout<<sizeof(s2)<<"\n";

Решение задачи: «Как узнать размерность указателя на массив»

textual
Листинг программы
#include <iostream>
 
 
template< typename T > inline int arrlen(T *arr) {
    return static_cast<int>(_msize(arr)/sizeof(T));
}
int main()
{
    char **s2 = new char *[10];
 
    for (int i = 0; i < 10; ++i)
        s2[i] = new char [20];
 
    std::cout <<arrlen(s2) * arrlen(s2[0]) << "\n";
    return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5
Похожие ответы