私はcharポインタの配列を使用しています。strlen_sse2()によるセグメンテーションフォールト
#define MAXFIELDS 100
#define MAX_LENGTH 245
char *dex_data[MAXFIELDS]; //declared globally.
このdex_data配列は非常に多くの機能で使用されています。このような主な機能でメモリを割り当てます。
dex_data = malloc(sizeof(char *)*MAXFIELDS);
int p;
for(p=0; p < MAXFIELDS ; p++)
dex_data[p] = malloc(sizeof(char)*MAX_LENGTH);
毎回セグメンテーションフォールトを取得します。私はGDBを通してエラーをチェックしようとしました。それは言う
#0 0x00007fb0a91b2b71 in __strlen_sse2() from /lib64/libc.so.6
私は間違ってメモリを割り当てるか、大きなメモリを割り当てようとしましたか? 私はその理由を知らない。誰でも助けてくれますか?前もって感謝します。
エラーが発生しているコードを表示してください。文字列に ''\ 0'がない場合、何かを割り当てるのを忘れてしまいました(ここでは100個のポインタにスペースを割り当てますが、20個の文字列を割り当てるだけです)、あるいはポインタを上書きしてしまいましたそれはどこかの点をランダムに指しています。 –
これまでに示したメモリ割り当てコードはOKです。これは、ハードコードされた20エントリの 'dex_data'のためだけにポインタを割り当て、' for(p = 0; p
lurker
私はこのdex_data []をstrlen()のstrcmp()内の非常に多くの場所で使用しましたが、他に何もしませんでした。とにかくあなたのための1つの例。 if(strlen(dex_data [6])> 0){ free_qty = atoi(dex_data [6]); } else { free_qty = 0; } – Nani