Как мне сделать динамически распределенную память в качестве глобальной области памяти?
#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, когда они находятся в разных функциях?
Как сделать динамически распределенную память доступной глобально?