如何讓這些大陣列更有效率?當我添加它們時,我遇到了分段錯誤,但是當我移除它們時,分段錯誤消失。我有幾個像這樣沒有顯示的大數組。我需要這些數組來處理我正在閱讀的文件。在下面的代碼中,我使用stdin而不是我通常使用的文件指針。使用後我也釋放每個大陣列。c編程更有效地使用大陣列
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void) {
int players_column_counter = 0;
int players_column1[100000] = {0};
char *players_strings_line_column2[100000] = {0};
char *players_strings_line_column3[100000] = {0};
char *players_strings_line_column4[100000] = {0};
char *players_strings_line_column5[100000] = {0};
char *players_strings_line_column6[100000] = {0};
char line[80] = {0};
while(fgets(line, 80, stdin) != NULL)
{
players_strings_line_column2[players_column_counter] =
malloc(strlen("string")+1);
strcpy(players_strings_line_column2[players_column_counter],
"string");
players_column_counter++;
}
free(*players_strings_line_column2);
free(*players_strings_line_column3);
free(*players_strings_line_column4);
free(*players_strings_line_column5);
free(*players_strings_line_column6);
return 0;
}
使用'malloc'(和朋友)動態分配。 – usr
分段錯誤最有可能是由於堆棧溢出(得到笑話?),當內存位於爲程序最重要的部分保留的特殊,小型和快速內存部分的邊界上時。正如@usr所述,使用malloc來糾正這個問題。 –
自由變量?有趣的想法。你需要一本C書 –