C 添加新函数会导致内存损坏

C 添加新函数会导致内存损坏,c,memory,C,Memory,我的问题是在C编程中,这是一个奇怪的问题,当一个函数被添加到一个特定的源文件(.C)中时,这会给我们的固件带来问题。新函数是否可能导致内存损坏? 注意:新添加的函数没有被任何线程以任何方式调用。这通过添加一个导致函数抛出分段错误的代码得到了证实。这是在linux环境中实现的。 调试此问题的其他方法有哪些?这可能是由任何原因造成的。最可能的原因是: 程序中的某个地方可能有一个bug调用未定义的行为。它一直处于休眠状态,直到现在,程序似乎仍在工作,但当内存布局发生变化时,行为也会发生变化。 有多种

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

这可能是由任何原因造成的。最可能的原因是:

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

  • 新函数导致堆栈内存不足,导致堆栈溢出。如果函数在调用堆栈中添加了额外的深度级别,则特别可能。如果您从未调用该函数,这就不会成为问题。(但是如果你从来没有调用过这个函数,你怎么知道它实际上是以链接开始的呢?)


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

请发布一个。我猜代码中的其他地方存在内存损坏问题。它会一直工作,直到你通过添加另一个函数来扰乱事情。执行常规操作检查内存错误,如运行
valgrind
。如果没有看到一些代码,就不能说更多。@RSahu-很难发布代码,因为这是一个机密代码。