gpt4 book ai didi

Cygwin malloc 覆盖堆中的另一个内存

转载 作者:行者123 更新时间:2023-11-30 14:27:37 25 4
gpt4 key购买 nike

当尝试分配一些内存时,我遇到了一个奇怪的错误。我有一个指向“malloced”结构的指针,我想要另一个结构。所以我再次调用 malloc,malloc 返回的指针指向一个空空间 - 到目前为止还可以。然后我 memset 分配的区域,并且 memset 覆盖另一个仍在使用中的变量。内存中的第一个结构位于 0x1643c98 中,给定的指向第二个结构的指针是 0x1643bf8,但我想 malloc 200 字节。代码:

data_t *data = get_head_data(); 
int length = data->head.length;
data_t *new_data = malloc(length);
memset(new_data, 0x00, length); // this line override the perivously malloced data
//some other operation

我使用window xp(32位)和cygwin,以及gcc 3.4.4。处理器是intel core 2 duo。知道出了什么问题或者应该是什么问题吗?提前致谢。

编辑:抱歉,我完全错了。有一个有缺陷的函数,它是意外调用的。当我稍后调用 malloc 时,先前的地址在内存中,我认为它是有效的,但它是 free()-ed 的。谢谢大家的建议!

最佳答案

如果您需要将新分配的内存设置为 0 - 使用calloc。您可能混淆了指针、大小和变量 - 再次检查您的代码。

关于Cygwin malloc 覆盖堆中的另一个内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7658904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com