VC++内存分配问题

VC++内存分配问题,第1张

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

在网上看到下面的文字:

------------------------------

char* pchar = new char

内存分一个字节给pchar(CD)再追加四个内存监视字节(FD FD FD FD)

所以现在实际的字节为(CD FD FD FD FD)

char* pchar = new char[8]

实际相关内存为(CD CD CD CD CD CD CD CD FD FD FD FD)

分配了内存后,接受的字符不大于CD的个数就不会出错,如果大于的话,就会在内存校验时出错。

如果用cin的方式接受pchar不要忘记'\0'也占一个字符

--------------------------------

我用程序试验过,确实如此。

请问,为什么VC++要采用内存监视字节呢?

显然不可能仅仅为了标记分配内存的边界,因为内存单元是否被用可以利用内存分配表之类的数据结构来记录。否则,动态内存管理就极其不安全了。

解析:

内存分配表之类的数据结构?

这才不安全呢,你都不知道什么时候建立这个结构,又由谁去释放。并且windows又是虚拟内存的,你的记录的内存指针可能又要换算,而且这种表一旦被冲内存冲掉找都找不回来

而且还有多线程地址切换问题

可能性非常多,各种资源、地址的不安全 *** 作都可能导致内存占用增加。

但在这些可能中,最常见的,是GDI资源泄露,也就是在OnDraw/OnPaint中使用的各种资源,在使用后没有正常的释放,因此,应该先检查GDI资源,如画笔、刷子、位图、DC等。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7841605.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存