伙计们,我有一个关于 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/