gpt4 book ai didi

c - 错误消息地址的示例程序未被堆栈、malloc 或(最近)释放

转载 作者:太空宇宙 更新时间:2023-11-03 23:37:28 25 4
gpt4 key购买 nike

作为学校的实践,我试图找到一个产生 valgrind 错误的程序 Address 0x1c is not stack'd, malloc'd or (recently) free'd。当然有很多关于这个错误的问题,但它们都是完整的程序,对我的例子来说太大了。

你有什么提示可以告诉我这样的示例程序是什么样子的吗?

感谢您的支持

最佳答案

你总是可以显式地欺骗和释放这样的指针:

#include <stdint.h>
#include <stdlib.h>

int
main (void)
{
free ((void *) (uintptr_t) 0x1c);
return 0;
}

一个稍微更现实的例子是一个空指针解引用,涉及一个位于偏移量 28 处的结构成员。像这样:

#include <stddef.h>

struct data
{
int pad[7];
int value;
};

int
main (void)
{
volatile struct data *volatile pointer = NULL;
pointer->value = 0;
return 0;
}

(需要使用 volatile 关键字来防止编译器识别空指针引用 dead store,并相应地进行优化。)

关于c - 错误消息地址的示例程序未被堆栈、malloc 或(最近)释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55431168/

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