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

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


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

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

Войти через центр авторизации
Похожие вопросы