我们是否有一个示例说明由于 C 中的 malloc 大小不正确而导致的非确定性故障?
例如,在我的 linux 'gzip' 程序中:
.
.
.
char* a = (char*)malloc(256) // correct version
is changed to
char* a = (char*)malloc(206) //faulty version
.
.
.
因此,通过正确版本的测试用例 tc 在错误版本上变为失败(即,分段错误)。但是,失败是不确定的。有时,错误版本上的失败测试用例 tc 不会导致分段错误(即通过)。
这可能是由于 malloc 的“未定义”行为,但我不知道它是如何发生的。
谁能给我一些具体的例子?先感谢您。