我有个关于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设置为变量数据的值,而不是像您想象的那样复制字符。
结果是丢失了对malloc()分配的内存的唯一引用,并导致内存泄漏。

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

10-09 03:30