2010-03-15 57 views
2

我的问题似乎是这样的:由一个线程(后来死亡)分配的堆数据似乎也死了。像这样:运算符new是否分配在THREAD堆上?

  1. 主题X:启动
  2. 主题Y:开始
  3. 主题X:PTR =新的一些字节
  4. 主题X:死
  5. 主题Y:尝试PTR使用 - 和崩溃!

到目前为止,我只在达尔文(Mac OS 10.5和10.6)上看到过这个问题,但没有尝试比Windows和Linux(Ubuntu)更多的其他平台,它可以按预期工作。我有这个问题一段时间了,所以任何有关这方面的技术诀窍或更多的信息,高度赞赏!

编辑:问题是由unrelated crash bug造成的。

+1

C++就如何或在内存分配没有提及一些有用的信息。也就是说,通常不同的线程共享相同的堆,所以你应该能够在它们之间传递指针。也许Thread X在完成之前释放内存? – GManNickG 2010-03-15 08:53:50

+0

如果线程X释放内存,则隐式完成。有没有办法检查/控制这种行为? – 2010-03-15 10:06:35

+0

不是。如果你不能控制线程X,你可以创建一个输出一些破坏的类。检查X是否以这种方式删除它。 – GManNickG 2010-03-15 16:24:26

回答