添加新功能会导致内存损坏

时间:2016-06-23 03:42:13

标签: c memory

我的问题是在C编程中,这是一个奇怪的问题,当一个函数将被添加到特定的源文件(.C)中时,这会导致我们的固件出现问题。新功能是否可能导致内存损坏? 注意:任何线程都不会以任何方式调用新添加的函数。通过添加导致函数抛出分段错误的代码来确认这一点。这是在linux环境中。 有什么其他方法可以调试此问题?

1 个答案:

答案 0 :(得分:0)

这可能是几乎任何事情造成的。最可能的原因是:

  • 程序中的某处可能存在调用未定义行为的错误。它一直处于休眠状态,程序似乎有效,但当内存布局发生变化时,行为会发生变化 有多种未定义的行为可能导致这种情况,最可能的情况是指针指向错误的地址或数组越界访问。

  • 新函数导致堆内存耗尽,堆栈溢出。特别是如果函数在调用堆栈中添加了额外的深度级别。如果你从不打电话给这个功能,这不是问题。 (但是,如果你从不打电话给这个函数,你怎么能告诉它实际上与之相关?)

没有通用的方法来查找程序中每个未定义行为的情况。对于任何人发布关于如何调试任何通用程序崩溃的一般答案并没有多大意义...如果可用则使用跟踪,如果不在崩溃时检查调用堆栈并找到崩溃函数等等。