Calloc 无法从不同的 .c 文件访问 -
Calloc cannot access from a different .c file-
我是 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;}
和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);}
我以前做过类似的事情(有一点不同),但现在它崩溃了。
是什么原因 ?。
如果我在源文件中构建一个函数,分配内存的地方就会解决?.
您有两个名为 ptr
的变量。一种是全局变量,一种是main
局部变量。 main
仅分配本地 ptr
,但随后 sec
尝试使用仍然为空的全局变量。
尝试从 main
中删除 char* ptr=NULL;
声明,以便两个函数都使用您的全局变量。
*ptr 已在全局和本地声明
局部变量具有更高的优先级,因此内存分配给局部*ptr
删除 main 中的减速
它会很好
我是 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;}
和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);}
我以前做过类似的事情(有一点不同),但现在它崩溃了。 是什么原因 ?。 如果我在源文件中构建一个函数,分配内存的地方就会解决?.
您有两个名为 ptr
的变量。一种是全局变量,一种是main
局部变量。 main
仅分配本地 ptr
,但随后 sec
尝试使用仍然为空的全局变量。
尝试从 main
中删除 char* ptr=NULL;
声明,以便两个函数都使用您的全局变量。
*ptr 已在全局和本地声明
局部变量具有更高的优先级,因此内存分配给局部*ptr
删除 main 中的减速 它会很好