gpt4 book ai didi

c - 没有在内存中正确设置整数

转载 作者:太空宇宙 更新时间:2023-11-04 08:22:21 25 4
gpt4 key购买 nike

ma​​in.c

List L;
Initialize(&L);
printf("%d\n", Size(&L));

list.c

void Initialize (List *L) {
L = malloc(sizeof(List));
if (L == NULL) {
perror("Unable to create memory for list. Exiting.");
exit(1);
}
L->size = 0;
}

int Size (List *L) {
return L->size;
}

我想要输出的大小是“0”,但我得到的是 max int sizeof“2673724”。在这一点上我有点困惑我的代码有什么问题。使用 gdb 看起来 Initialize() 函数实际上并没有修改列表的大小,因为它在进入该函数之前和之后保持不变。

我做错了什么吗?

最佳答案

这个Initialize 函数忽略参数,分配一个缓冲区,向其中写入一些东西,然后丢弃它并导致内存泄漏。

使用与 Size 相同的方式尝试这个简单的函数:

void Initialize (List *L) {
L->size = 0;
}

关于c - 没有在内存中正确设置整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32878753/

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