AIX 中的 memmove_overlay 命令是什么?

发布于 2024-10-29 04:27:27 字数 130 浏览 6 评论 0原文

我正在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南汐寒笙箫 2024-11-05 04:27:27

memcpy 将内存区域从 *src 复制到 *dest。如果内存区域重叠,程序可能会崩溃。尝试使用 memmove 来代替。

memcpy copies a memory area from *src to *dest. It might crash your program if the memory areas overlap. Try memmove instead.

最美不过初阳 2024-11-05 04:27:27

验证 memmove() 调用的参数。听起来像是内部的 memmove_overlay() 函数是 memmove() 实现的一部分,因此它的作用与 memmove() 相同正在做,可能。

您当然可以使用一组已知的安全参数设置一个虚拟测试用例,如下所示:

char test1[2], test2[2] = { 47, 11 };

memmove(test2, test1, sizeof test2);

然后使用调试器单步执行 memmove() 来查看它如何在 memmove_overlay 中结束()。

但是,崩溃很可能只是由于 memmove() 输入错误造成的,因此与 memmove_overlay() 函数正在运行这一事实无关。

Verify the parameters to your memmove() call. The internal-sounding memmove_overlay() function is part of the implementation of memmove(), so it's doing the same thing as memmove() is doing, probably.

You could of course set up a dummy test case using a known safe set of parameters, like so:

char test1[2], test2[2] = { 47, 11 };

memmove(test2, test1, sizeof test2);

And then use your debugger to step into memmove() to see how it ends up in memmove_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 the memmove_overlay() function is running.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文