|
不死心!还是关于new delete内存碎片的问题!
[复制链接]
情况一:
程序中有一个线程其中有一个死循环
while(1)
{
new (n)
......
....
.....
delete (n)
}
n大小不定
这样的一个程序会产生内存碎片吗?每次都及时释放了,然后再申请,还能产生碎片吗?
情况二:
程序中有2个线程序其中有二个死循环
while(1)
{
new (n)
......
....
.....
delete (n)
}
while(2)
{
new (m)
......
....
.....
delete (m)
}
m,n大小不定
假设运行时候线程1中申请了10KB 线程2申请了20KB 然后线程1运行完毕并释放10KB 接着又开始申请30KB,那么之前释放的10KB就成内存碎片了(疑问:是否是战时的),然后线程1运行完毕释放30KB,接着又申请10KB,那么这10KB是否又是在最初的10KB空间上开辟,那么之前的碎片就不存在了,其中线程2假设申请的20KB一直未动!
我觉得只要NEW 后到下次再NEW的时候释放完毕,那么产生内存碎片是不大可能的事情,就算产生也只是1块碎片,不会有很多碎片.
望高手能详细解答一下!!!我就是不明白,可能是苯了点,但是我不死心,想搞搞清楚!!!谢谢!!!
|
|