如何将动态分配的内存作为全局内存位置?
#include <stdio.h>
#include <string.h>
char* call(int);
char *y;
int main() {
char *a;
int x;
x=45;
a=call(x); \\ I guess it must be pointing to the Memory pointed by y
printf(a); \\prints hello world
x=46;
strcpy(a,"good");
a=call(x);
printf(a);
}
char* call(int x) {
y=(char *)malloc(40);
if(x==45) {
strcpy(y,"hello world");
return(y);
} else {
return(y);
}
}
我有一些问题:
malloc()
所允许的内存是否会一直持续到程序结束或者直到定义它的函数结束?
如何使a
和y
指向malloc函数在不同函数中分配的相同地址?
如何使动态分配的内存全局可访问?
答案 0 :(得分:3)
答案 1 :(得分:2)
free
a = y;
会使a
和y
指向相同的内存位置。在您的情况下,a = call(x);
也会这样做。 a
指向您在call
中分配的内存,该内存在main
中仍然有效。请记住free(a);
中的main
。