我用new(char[int])或者malloc(int*sizeof(char))分配内存(int>4),为什么对得到的指针调用sizeof()函数只有4?
我用new(char[int])或者malloc(int*sizeof(char))分配内存(int>4),为什么对得到的指针调用sizeof()函数只有4? 问题点数:20、回复次数:5Top
1 楼zheng_can(nothrow)回复于 2002-02-15 23:03:11 得分 5
你用的是Windows下的编译器吧
你现在所得到的大小是一个指针的大小(32bits)
因为你是在调用 sizeof( Pointer )
Windows下,为了要支持4G的内存,就是用了 32bit 的指针(配合保护模式)Top
2 楼songhtao(三十年孤独)回复于 2002-02-15 23:12:55 得分 5
正常因为指针值是指向数据的地址,32位机中地址正好是4个字节表示的。Top
3 楼sin4x(一瓶水)回复于 2002-02-15 23:18:16 得分 5
返回的是保存int所用的空间,在不同机器会有不同的结果
Top
4 楼hz129(古雨)回复于 2002-02-16 01:56:19 得分 5
int a[10];
sizeof(a) 的值为10
int *p;
p = new int[100];
sizeof(p) 的值为4
因为sizeof(p)求的是指针本身所占的空间大小,在32位环境下指针占4字节,所以为4,具体参见《高质量C++编程》Top
5 楼KeepRun(void)回复于 2002-02-16 10:49:56 得分 0
谢谢,差点儿忘记了,做个DOS程序,暂时没编译器,只好用VC。Top




