-1

次のコードに問題があり、理解できませんか?誰かアイデアがあれば教えてください。

2つのグローバル変数があります。

char *newArgv[100], *s[MAXCHAR];

と1つの機能

getword(char *w)

私のメイン関数では、次のように言ってこの関数を呼び出します

getword(s[num]);

getword関数には、次のような割り当てがあります。

w[index] = 'e';

問題は、コードの最後の行にあります。プロジェクトは(明らかに)コンパイルされますが、プログラムはクラッシュします。誰かがなぜ何か考えを持っていますか?ありがとう!

4

2 に答える 2

3

NULLポインタを間接参照しています。

sMAXCHARNULLポインタの配列です。s[num]thポインタを返しnumます-これもNULLです。だから中getwordw[index]違法です。

メモリを動的に割り当てる必要があります。

for ( int i = 0 ; i < MAXCHAR ; i++ )
    s[i] = malloc(MAX_WORD_LENGTH);
于 2012-10-14T22:32:40.260 に答える
1

s[num]char*値付きであるNULLため(グローバルはゼロで初期化されるため)、それを逆参照するとき、w[index]つまりs[num][index]NULLポインターを逆参照するとき。

于 2012-10-14T22:33:00.147 に答える