AIX 中的 memmove_overlay 命令是什么?
我正在 AIX 6.1 中的一些 C 代码中调试动态内存分配问题,并且在我的堆栈跟踪中,我在崩溃之前收到了命令 memmove_overlay。
在程序崩溃之前,我调用了 memcpy 函数。
这个命令是做什么的?
I'm debugging a dynamic memory allocation problem in some C code in AIX 6.1 and in my stack trace I get the command memmove_overlay before the crash.
Before the program crashed I had called the memcpy function.
What is this command doing ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
memcpy
将内存区域从 *src 复制到 *dest。如果内存区域重叠,程序可能会崩溃。尝试使用memmove
来代替。memcpy
copies a memory area from *src to *dest. It might crash your program if the memory areas overlap. Trymemmove
instead.验证
memmove()
调用的参数。听起来像是内部的memmove_overlay()
函数是memmove()
实现的一部分,因此它的作用与memmove()
相同正在做,可能。您当然可以使用一组已知的安全参数设置一个虚拟测试用例,如下所示:
然后使用调试器单步执行 memmove() 来查看它如何在 memmove_overlay 中结束()。
但是,崩溃很可能只是由于
memmove()
输入错误造成的,因此与memmove_overlay()
函数正在运行这一事实无关。Verify the parameters to your
memmove()
call. The internal-soundingmemmove_overlay()
function is part of the implementation ofmemmove()
, so it's doing the same thing asmemmove()
is doing, probably.You could of course set up a dummy test case using a known safe set of parameters, like so:
And then use your debugger to step into
memmove()
to see how it ends up inmemmove_overlay()
.But, chances are that the crash just is because of bad input to
memmove()
, and thus has nothing to do with the fact that thememmove_overlay()
function is running.