我不是一個好英語的人。訪問限制內存時沒有分段錯誤
所以在我的程序中我想複製一個文本存在一個txt文件到一個數組。
typedef struct Chaine
{
char * Lachaine;
int Taille_C;
} Chaine ;
int main (void)
{
Chaine *Tab_Texte=NULL;
Tab_Texte=(Chaine*)malloc(sizeof(Chaine));
FILE* Texte= NULL;
Texte = fopen("chaines", "r");
fseek(Texte, 0, SEEK_END);
Tab_Texte->Taille_C=ftell(Texte);
fseek(Texte, 0, SEEK_SET);
Tab_Texte->Lachaine=NULL;
Tab_Texte->Lachaine=(char*)malloc(sizeof(char)*Tab_Texte->Taille_C);
fread(Tab_Texte->Lachaine,sizeof(char)*(Tab_Texte->Taille_C),1,Texte);
printf("%s",Tab_Texte->Lachaine);
return 0;
}
這裏一切都很正常,當我改變
Tab_Texte->Lachaine=(char*)malloc(sizeof(char)*Tab_Texte->Taille_C);
與(例如)
Tab_Texte->Lachaine=(char*)malloc(sizeof(char)*Tab_Texte->Taille_C - 10);
它的工作原理始終,它想告訴我一個分割的錯,因爲sizeof(char)*Tab_Texte->Taille_C - 10
較短比sizeof(char)*Tab_Texte->Taille_C
等文件中的文字。
你能告訴我爲什麼它總是有效嗎?
標題應該是「爲什麼我沒有得到分段錯誤?」。 – haccks
要點1.不要強制轉換malloc()的返回值。要點2.如果這是'C++',則推薦使用'new'。第3點。您從未釋放分配的內存。將導致內存泄漏。 –