Рассмотрим этот код:
int *p = new int;
cout << sizeof(*p);
delete p;
Как и ожидалось, результат равен 4. Теперь рассмотрим этот другой код:
int *p = new int[10];
cout << sizeof(*p);
delete[] p;
Я ожидал получить 40 (размер выделенного массива), однако результат все равно 4 .
Теперь предположим, что у меня есть функция int *foo()
, которая возвращает указатель на структуру, созданную с помощью new
или new[]
(но я не знаю, какая именно):
int *p = foo();
У меня вопрос, есть ли способ (или хак) узнать, указывает ли p
одно целое число или массив целых чисел?
Пожалуйста, имейте в виду, что это всего лишь теоретический вопрос. Я не буду писать реальный код таким способом.