FILE *fp;
char *in;
char *sa[20];
char inn[100];
//other stuff here
for(huge loop) {
fp = popen(filename, "r");
fscanf(fp, "%100s", inn);
in = strtok(inn, "=");
i = 0;
while(in != NULL) {
sa[i++] = in;
in = strtok (NULL, "=");
}
}
這在我的linux機器上編譯並運行了大約4分鐘,因爲它會對大量數據文件進行排序,然後進行分段錯誤。它直到這一點都正確運行,並且這一點取決於我做了多少事情,所以我強烈懷疑有內存泄漏,我應該釋放指針。但我認爲沒有malloc
編譯器會自動分配並取消分配指針內存。我究竟做錯了什麼?指針,內存不足,分段錯誤?
謝謝。
你在哪裏做'pclose'? –
另外,你知道'strtok'不會返回唯一的指針,並且它返回指向它標記的字符串的指針?這意味着'sa'中的所有*指針將指向'inn'中的不同位置。如果'inn'是一個局部變量而'sa'不是,那麼你在你之前就有麻煩了。 –
不檢查'popen()'的返回值是邪惡的。 – Asblarf