簡體   English   中英

strcat導致分段錯誤

[英]strcat causing segmentation fault

這會導致分段錯誤:

char str1[60];
char**array;

array=malloc( str_nos * sizeof(char *) );
array[i]=malloc( str_len * sizeof(char *) );

strcat(array[i],str1);
strcat(array[i]," ");

str1是從scanf獲取的,並且少於60個字符。 array[i]來自動態字符串數組。

您是否知道導致問題的原因? 它僅發生在大量scanf

至少兩種可能性:

  • 如果array[i]指向的緩沖區沒有足夠的空間,則您將覆蓋緩沖區的末尾,這通常會導致seg-fault。

  • 其中一個字符串未正確以Null結尾,因此strcat才開始遍歷內存。

任一array[i]是指向不通,或者通過指向的緩沖區的長度array[i]是不夠的。

編輯:根據您發布的代碼,由array[i]指向的緩沖區最初包含未初始化的垃圾。 您不能將strcat應用於包含未初始化垃圾的目標緩沖區。

要么讓你的緩沖試圖之前持有空字符串strcat東西吧

array[i][0] = '\0';
strcat(array[i],str1);
strcat(array[i]," ");

或者,以strcpy開頭,然后執行strcat

strcpy(array[i],str1);
strcat(array[i]," ");
array[i]=malloc( str_len * sizeof(char *) );

i這是什么 如果i不在[0,str_len)范圍內,則您正在訪問的內存可能沒有使用權限...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM