我正在使用一個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個字符串),或者你已經覆蓋了一個指針所以它隨機指向某個地方。 –
您目前顯示的內存分配代碼看起來沒問題。有點奇怪,你只是爲硬編碼的20個'dex_data'分配指針,而不是爲'(p = 0; p
lurker
我在strlen()的strcmp()中的很多地方都使用了這個dex_data [],但是沒有做任何其他的事情。無論如何你的一個例子。 if(strlen(dex_data [6])> 0){free_qty = atoi(dex_data [6]); } else { free_qty = 0; } – Nani