游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: bigbook2000

VC中的delete和delete[]

[复制链接]

18

主题

279

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
QQ
发表于 2006-1-16 16:08:00 | 显示全部楼层

Re:VC中的delete和delete[]

哈哈,没说清楚。
随便一个指向对象的指针就可以。(不加指针在VC6 SP1中会导致一个语法错误)

多出来的4字节是在对象的前面还是后面呀?
我只看过前面的内容。
单个对象:[标志0XFDFDFDFD][对象内容]
数组对象:[标志0XFDFDFDFD][对象个数][每个对象]

标志之前还有相关内容,是一个链表,用来把所有动态分配的内存连接起来,但具体格式我就不清楚了。

7

主题

229

帖子

247

积分

中级会员

Rank: 3Rank: 3

积分
247
QQ
发表于 2006-1-16 17:35:00 | 显示全部楼层

Re:VC中的delete和delete[]

因为多出来的是用[]分配内存的。

有可能VC会在这个类所在的内存前或是后增加一个DWORD,
而这个DWORD应该是用来存储这个类的SIZE。

不知这样分析对不对?

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
 楼主| 发表于 2006-1-16 18:19:00 | 显示全部楼层

Re:VC中的delete和delete[]

但是p3也是new[]分配出来的,为什么还是4个字节呢

6

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2006-1-16 18:25:00 | 显示全部楼层

Re:VC中的delete和delete[]

楼主:那是编译器的问题,如果你换个编译器看看结果就知道了。要用标准的。

7

主题

12

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2008-3-8 17:33:00 | 显示全部楼层

Re: VC中的delete和delete[]

我的一个答案~
new 和 new[]在分配内存时都是以片的形式整体分配,delete 和 delete[]的时候也是以片的形式整体释放,所以,只有当 new[]并需要“析构”的时候,也就是说需要知道析构多少次的时候,才会多出那4字节,用来表明片中对象的数目~
http://www.cnmsoft.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 09:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表