Задать вопрос

Как выделить столько динамической памяти для переменной, сколько нужно?

char t[80];
cout << sizeof t << endl; // 80 байт, всё правильно
char *p = new char[80];
cout << sizeof *p << endl; // 1 байт. Почему?


При работе со статической памятью выделяется именно 80 байт, что верно, а при работе с динамической (heap) выделяется 1 байт. Почему? Что я делаю неправильно?
  • Вопрос задан
  • 105 просмотров
Подписаться 1 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Яндекс Практикум
    Мидл разработчик С++
    4 месяца
    Далее
  • Яндекс Практикум
    Разработчик C++ расширенный
    12 месяцев
    Далее
Решения вопроса 1
В первом случае ты получаешь длинну статического массива, sizeof работает по принципу sizeof(char)*StaticLength.
Во втором случае ты получаешь размер первого элемента, на который указывает p. *p --> p[0] где sizeof(p[0] --> char), тогда как *(p+1) --> p[1]
%)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы