【发布时间】:2012-12-23 10:45:24
【问题描述】:
我有一个代码,它使用数字配方的标准例程来查找 3x3 矩阵的特征向量。虽然代码在 linux 机器上完美运行,但它在 mac 上因分段错误 11 而失败。使用 gdb,当我回溯时,我发现
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0000000140400008
0x0000000100002a88 in tqli (d=0x7fff5fbffaa4, e=0x7fff5fbffa98, n=3, z=0x140400000) at ac_nr.c:402
402 f=z[k][i+1];
其中 tqli 是数字配方中的标准例程,z 定义正确。我可以自信地这么说,因为在 linux 机器中,程序在执行过程中没有发现任何困难,并且给了我正确的答案。谷歌搜索无助于获得任何相关答案。任何人都可以暗示 mac 中发生了什么或如何继续解决这个问题吗?
非常感谢,
【问题讨论】:
-
你在linux下用valgrind运行程序了吗?
-
仅仅因为它在 linux 上给了你正确的答案并不排除代码中存在内存错误的可能性。
-
谢谢大家。虽然我没有尝试 valgrind,但我发现 d 的分配不正确,而 linux 机器大多按照 Isermi 的建议进行操作,并且没有显示为 seg 错误。再次感谢所有建议,现在松了一口气。
标签: linux macos gcc segmentation-fault numerical