我在AIX 6.1中调试了一些C代码中的动态内存分配问题,并且在我的堆栈跟踪中我在崩溃之前得到了命令memmove_overlay。AIX中的memmove_overlay命令是什么?
在程序崩溃之前,我调用了memcpy函数。
这个命令在做什么?
我在AIX 6.1中调试了一些C代码中的动态内存分配问题,并且在我的堆栈跟踪中我在崩溃之前得到了命令memmove_overlay。AIX中的memmove_overlay命令是什么?
在程序崩溃之前,我调用了memcpy函数。
这个命令在做什么?
memcpy
将存储区域从* src复制到* dest。如果内存区域重叠,它可能会导致程序崩溃。改为尝试memmove
。
验证您的memmove()
调用的参数。内部探测memmove_overlay()
函数是memmove()
实现的一部分,所以它可能与memmove()
正在做同样的事情。
你当然可以建立一个虚拟的测试案例使用已知的安全组参数,就像这样:
char test1[2], test2[2] = { 47, 11 };
memmove(test2, test1, sizeof test2);
然后使用调试器步入memmove()
,看看它是如何在memmove_overlay()
结束。
但是,碰撞的可能性仅仅是因为对memmove()
的错误输入,因此与memmove_overlay()
函数正在运行的事实无关。
请显示一些代码。但是,我认为瑞恩是正确的。 – JeremyP 2011-04-04 14:15:42
很难从你提供的稀缺信息中找出所有的东西,但是按名称猜测,你可能调用了'memcpy'作为重叠的内存区域。为重叠的内存区域调用memcpy是非法的。其余的如下。 – AnT 2011-04-04 15:46:34