内存替换在C?

cap*_*ede 1 c memory malloc

伙计们,我对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;
}
Run Code Online (Sandbox Code Playgroud)

并显示如下输出:

nilai wew : budipergikepasar
nilai wew : kepasarbudisedangpergi
Run Code Online (Sandbox Code Playgroud)

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

thx提前

jbr*_*uni 7

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

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