我正在调试AIX 6.1中某些C代码中的动态内存分配问题,在我的堆栈跟踪中,我在崩溃之前得到命令memmove_overlay。
在程序崩溃之前,我调用了memcpy函数。
这个命令在做什么?
答案 0 :(得分:1)
memcpy
将内存区域从* src复制到* dest。如果内存区域重叠,它可能会使程序崩溃。请改为memmove
。
答案 1 :(得分:1)
验证memmove()
电话的参数。内部探测memmove_overlay()
函数是memmove()
实现的一部分,因此它可能与memmove()
正在做的事情相同。
您当然可以使用已知的安全参数集来设置虚拟测试用例,如下所示:
char test1[2], test2[2] = { 47, 11 };
memmove(test2, test1, sizeof test2);
然后使用您的调试器进入memmove()
,看看它是如何在memmove_overlay()
中结束的。
但是,崩溃的可能性仅仅是由于memmove()
的输入错误,因此与memmove_overlay()
函数正在运行的事实无关。