English 中文(简体)
C++的记忆
原标题:Memory Error in C++
  • 时间:2009-11-08 20:00:20
  •  标签:

我的《守则》要求我保持记忆,这一发言多次重复:

Node** x;
x = new Node*[11];

这笔拨款没有兑现。 我把产出扔到圣殿上来,从而 out下了这条线。

I am building my code on Visual Studio. It works fine in Debug mode (both in VS2005 and VS2008) However it throws the error in VS2005 Release mode. A direct exe generated from cl Program.cpp works if cl is from VS2010 but fails when it s from VS2005. Any clues?

PS: Linux gives me a Bus Error(core dumped) for the same Thanks

UPDATE: And I guess, it can be due to unaligned thing as I understand. I just made 11 to 12 (or any even number) and It works!!! I don t know why. It doesn t work with odd numbers!

更新2:?

最佳回答
问题回答

我的《守则》要求我记忆犹新。

你们是否真的忘了记忆?

x = new Node*[11];

请删除<代码>x。 同样:

delete [] x;   // the correct way

delete x;  // incorrect

或者说,可能只是一些东西会削弱这一鸿沟,尽管我本来会期望,以 de淡的方式行事会使其更加明显,而不是更少。 但是,由于腐败猖獗,很少有人保证,腐败会以轻松、易腐.的方式破坏。

该法典没有任何错误。

Node **x;
x = new Node*[11];

你们正在把11个点子分配给诺德,并把它作为变数X的双重点。 罚款。

您的方案在这里坠毁,可能是因为你方案其他地方发生的一些记忆错误。 也许你重新撰写过去阵列。 如果你用 lo子装上这一阵列,则把你的指数翻一番。

如果你能够查阅记忆,我建议使用。 大型项目难以追踪这些弊端。

有效的C++98执行将产生一个例外(结果:当分配失败时,即:bad_alloc),而不仅仅是坠毁。 我同意先前的答复,并建议在val平时执行你的方案,以纪念腐败。 应当在选择的分配中提供Valgrind。





相关问题
热门标签