我需要在我的程序中使用鏈表的算法。我會很快解釋它需要做什麼:當函數被多次使用時程序崩潰
我的程序生成一個最大尺寸爲2.000的字符串。我需要創建以下類型元素的鏈表:
typedef struct List * News;
struct List {
char * Text;
News next;
} ;
由於結構的最大尺寸爲2.000,把一個結構是我的文本字段的信息,我想使用的確切大小的結構。所以,我提出了以下函數來創建和我的鏈接列表的頂部添加一個元素:運行時
void InsertLL (News p, char M[]){
char * text = (char *)malloc(strlen(M) * sizeof(char));
strcpy(text, M);
News s,t;
t = malloc(sizeof(struct List));
t-> Text = text;
s=p;
p=t;
t -> next = s;
}
在一個無限循環的程序運行,而此前,它崩潰。沒有函數InsertLL,它運行良好(例如,如果我不關心結構的大小並將其直接放在我的元素上)。在調試模式下,它不會崩潰,所以我認爲這是一種我無法解決的內存問題。
有什麼我做錯了,當我打電話malloc?
感謝您的幫助!
'字符*文本= malloc的(1+的strlen(M));'' – wildplasser