Calloc无法从不同的.c文件访问 -

Lio*_*orA 0 c calloc dynamic-allocation

我是新来的c&我遇到了一个新问题..

file1.c-

#include <stdio.h>
#include <stdlib.h>

extern int sec();
char *ptr=NULL;

int main(){
char *ptr=NULL;

ptr=(char*)calloc(sizeof(char),8);/*8 chars.*/
*(ptr+0)='0'; /*first char set to 0.*/

printf("%c\n",*ptr);

*(ptr+0)='r';
*(ptr+1)='o';
*(ptr+2)='i';
*(ptr+3)='L';

printf("%c %c %c %c \n",*(ptr+0),*(ptr+1),*(ptr+2),*(ptr+3));

sec();

return 0;}
Run Code Online (Sandbox Code Playgroud)

和file2.c-

#include <stdio.h>
#include <stdlib.h>

extern char *ptr;

void sec(void){

puts("before.");

*(ptr+0)='L';/*CARSH HERE.*/
*(ptr+1)='i';
*(ptr+2)='o';
*(ptr+3)='r';

puts("after.");

printf("%c %c %c %c ",*(ptr+0),*(ptr+1),*(ptr+2),*(ptr+3));

free(ptr);}
Run Code Online (Sandbox Code Playgroud)

我之前做过类似的事(有一点不同),但现在它崩溃了.是什么原因 ?.如果我将在源文件中构建一个函数,在哪里分配了内存,它将被解决?

asc*_*ler 5

您有两个名为变量的变量ptr.一个是全局变量,一个是本地变量main. main仅分配local ptr,但然后sec尝试使用仍为null的全局变量.

尝试删除char* ptr=NULL;声明,main以便两个函数都使用您的全局变量.