我用new(char[int])或者malloc(int*sizeof(char))分配内存(int>4),为什么对得到的指针调用sizeof()函数只有4?

KeepRun 2002-02-15 10:55:28
我用new(char[int])或者malloc(int*sizeof(char))分配内存(int>4),为什么对得到的指针调用sizeof()函数只有4?
...全文
44 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
KeepRun 2002-02-16
  • 打赏
  • 举报
回复
谢谢,差点儿忘记了,做个DOS程序,暂时没编译器,只好用VC。
hz129 2002-02-16
  • 打赏
  • 举报
回复
int a[10];
sizeof(a) 的值为10

int *p;
p = new int[100];
sizeof(p) 的值为4
因为sizeof(p)求的是指针本身所占的空间大小,在32位环境下指针占4字节,所以为4,具体参见《高质量C++编程》
Lemon-sai 2002-02-15
  • 打赏
  • 举报
回复
返回的是保存int所用的空间,在不同机器会有不同的结果
我不懂电脑 2002-02-15
  • 打赏
  • 举报
回复
正常因为指针值是指向数据的地址,32位机中地址正好是4个字节表示的。
zheng_can 2002-02-15
  • 打赏
  • 举报
回复
你用的是Windows下的编译器吧
你现在所得到的大小是一个指针的大小(32bits)
因为你是在调用 sizeof( Pointer )
Windows下,为了要支持4G的内存,就是用了 32bit 的指针(配合保护模式)

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧