那么好了问题变了!

rightthgir 2007-08-28 02:32:41
呵呵
那么给你int*p=int [20]; 既然sizeof(p)得不到该动态数组的大小,如何才能得到它的大小呢?


上接帖子:int*p=int [20];多谢这个帖子回复的兄弟!我没有说清楚, 本帖是我要问的问题核心,hehe


...全文
142 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiantongyuan 2007-08-28
  • 打赏
  • 举报
回复
释放的时候只需delete[] int;
xiantongyuan 2007-08-28
  • 打赏
  • 举报
回复
你自己分配的空间还怕不知道大小吗?
没有其它方法获取它的大小
iatsbg 2007-08-28
  • 打赏
  • 举报
回复
new出来的数组的大小的确是有保存的,但保存在哪C++并没有规定,不同的编译器可以将大小保存在不同的位置,所以没有通用的办法获得数组的大小。
可以考虑用vector代替数组,用vector.size()获得大小。
shanhqk 2007-08-28
  • 打赏
  • 举报
回复
1、是不是应该是int * p = new int[20]呢
2、new在分配的时候,其实是分两步,一步是先调用operator new 来分配大小合适的内存,然后调用int的构造函数,这样,C++编译器本身其实知道它的大小的,所以可以调用delete来删除。
rainharder 2007-08-28
  • 打赏
  • 举报
回复
new的时候不保存大小,delete的时候怎么释放?
只是不知道怎么获得
taodm 2007-08-28
  • 打赏
  • 举报
回复
在你写int*p=int [20]; 这句话的时候,找一个变量同时记下来。
iatsbg 2007-08-28
  • 打赏
  • 举报
回复
在堆上分配的数组,没有正常途径能获得其大小。

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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