我有一個程序在選項參數(-r,-d等)後面帶有非選項參數(來自命令行)並插入每個非選項參數成陣列。可以鍵入的非選項參數的最大數量是25.使用字符串數組時總線錯誤10 - C
但問題是,當我運行程序時出現'Bus Error 10'錯誤,我不知道爲什麼。看着有類似問題的很多帖子,但似乎無法修復礦山
的代碼是:
void loop_namelist(int argc, char *argv[])
{
int index = 0;
--optind;
char *buff_namelist[25]; //the array that the arguments are stored in
*buff_namelist = malloc(25 * 25); //allocating some memory for the array
while (optind < argc) //loop until no arguments left
{
strcpy(buff_namelist[index], argv[optind]);
++index; //move to next index in array
}
}
當我運行它像這樣:
./program -r arg1 arg2
我乘坐公共汽車錯誤。
編譯'GCC -Wall -g由source.c -o程序「(或者在編譯器中啓用所有的警告和調試信息)並學習如何使用調試器(例如'gdb')。另外,告訴我們你正在使用什麼操作系統和編譯器。 –
你知道你只給指針數組中的* first *指針分配空間嗎?所以,只要'index'大於0,這是**未定義的行爲**。 – WhozCraig
我正在使用gcc編譯器和那些參數,但仍然沒有。我正在使用MAC OS X. – pudumaster