继续placement new的问题

无病呻吟2 2008-01-24 09:06:15
接着上帖问:http://topic.csdn.net/u/20080123/15/1c9e51a7-c603-44e5-9f6b-6bf7899c84b4.html

我在vs2005里测试,确实operator new[] 使用的时候,需要增加4个字节作为数组的长度,我跟踪了,确实是这样的!
但是我在linux下,g++测试,为什么就没有需要那4个字节的数组长度呢?
难道那不是标准规定的吗?
请求指点!!!!!
...全文
97 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
光跃 2008-01-26
  • 打赏
  • 举报
回复
更正:c++编译器为new操作所分配的内存分两部分:cookie和对象。cookie用于记录对象信息,其数据格式视编译器而定。侯捷的【Boost.Pool】文章开始便有介绍。
HopeLei 2008-01-25
  • 打赏
  • 举报
回复
首先我想说的是 template new操作是在一块已经分配的内存上构造出对象,其次是作为 new 操作,它需要记录分配的指针所指内存的大小。由于该操作是由编译器完成的,所以不同的编译器有不同的数据结构来存储记录的数据,具体的方法就各不相同。在VC中,将指针所指的内存的大小存储在该指针所指的一个机器字里(不包括该机器字),紧接后面的才是存储用户数据的区域。
光跃 2008-01-24
  • 打赏
  • 举报
回复
这不属于c++标准的问题,在堆上new一块内存,系统总要记录哪块内存用过了吧,用了多少啊等信息,对我们有用的数据只占所有分配内存的一部分。而且也不只是定位new才有的问题,也不是编译器的问题。是系统的问题,俺以为。。。
无病呻吟2 2008-01-24
  • 打赏
  • 举报
回复
谁来帮忙解答下,在线等,马上可以结帐

64,654

社区成员

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

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