考虑这段代码:
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
指向单个整数还是整数数组?
请记住,这只是一个理论问题。我不会以这种方式编写真正的代码。