異なるが.cからアクセスすることはできませんのcallocは..私は新しい問題に出会っ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);}
私はこれの前に(1つの違いで)何かをしましたが、今はクラッシュします。 その理由は何ですか? ソースファイルに関数をビルドすると、割り当てられたメモリはどこで解決されますか?
[可変シャドーイング](https://en.wikipedia.org/wiki/Variable_shadowing)を参照してください。 – jweyrich