一段内存泄露的代码为什么样windows下跑没问题?Linux下list内存问题

发表时间:2018-02-28 18:00:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《咋解决苹果电脑内存不够的问题?mac装win虚拟系统不占内存不影响运行么》相关知识。本篇中小编将再为您讲解标题一段内存泄露的代码为什么样windows下跑没问题?Linux下list内存问题。

工程代码中出现了①个bug,简单的说就是两个指针a,b同时指向①块内存,通过b把内存delete掉,又重新new了①块赋给b,但是后面又继续通过a(野指针)来访问这块内存。这段程序在windows下跑①直正常,移到Linux下,总是时不时挂掉。

原工程代码有点多,贴①个抽象出的代码。求教大神,为什么这段错误的代码能够跑通?为什么只在Linux下才偶尔会挂?

class A{

public:

tA():s("I am object A."){}

tstring s;

tint a[①⓪⓪⓪⓪⓪⓪⓪⓪];

};

int main ()

{

tA *a = new A;

twhile (①)

t{

ttA *b = a;

ttdelete b; //a成为野指针

ttb = new A; //b内存泄露

ttcouta-sendl; //Run OK in windows, may die in Linux

t}

}

windows下释放的可以理解为不在管理,当时内存没有被刷写的情况下依然有值,但是如果内存紧张时就会出问题。这种情况会造成①个问题,比如①个程序在②g的机器上跑没问题,换到①g内存的机器上就挂了,这样的话bug早起来就难了\", \"extras\": \"\", \"created_time\": ①④④⑥②⑤①⑨⑧② · \"type\": \"answer

这个和内存回收机制有关,windows下面,那个野指针指向的内存没有被清除而已,在linux下,就被释放了,所以linux挂了\", \"extras\": \"\", \"created_time\": ①④④⑥⓪⓪①②⓪⑧ · \"type\": \"answer

编后语:关于《一段内存泄露的代码为什么样windows下跑没问题?Linux下list内存问题》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《哪些型号的 MacBook Pro 支持 16 GB 内存?只有 Intel 的集成显卡的 Macbook Pro with Retina 可以进行GPU计算么》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题