gpt4 book ai didi

c - C中的内存替换?

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

伙计们,我有一个关于 C 语言中内存的问题

请看下面的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *tesaja(char *data)
{
char *tmp = (char*)malloc(sizeof(char) * strlen(data));
tmp = data;
return tmp;
}

int main()
{
//area 1
char *wew = tesaja("budipergikepasar");
printf("nilai wew : %s\n",wew);

//area 2
wew = tesaja("kepasarbudisedangpergi");
printf("nilai wew : %s\n",wew);

return 0;
}

并显示如下输出:

nilai wew : budipergikepasar
nilai wew : kepasarbudisedangpergi

我唯一的问题是,区域 1 中的内存是否会自动释放并替换为新内存?

提前谢谢

最佳答案

“tmp = data”这一行并没有按照您的想法行事。在 C 中,使用 strcpy() 复制字符串。 C 字符串是 char 元素的数组。该行将变量 tmp 设置为变量数据的值,而不是像您想象的那样复制 char。

结果是您丢失了对 malloc() 分配的内存的唯一引用并导致内存泄漏。

关于c - C中的内存替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5887762/

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