我是C#人,第一次使用C語言進行處理。循環內部的段錯誤
我有這個功能,在未來malloc()
,realloc()
和free()
工作:
char ** split(char * delimiter, char * input) {
int i = 0;
int size = sizeof(char *);
char ** tokens;
char * token;
char * state;
tokens = (char **) malloc(size);
if(tokens == NULL) {
printf("Allocation failed.");
return;
}
for(token = strtok_r(input, delimiter, &state);
token != NULL;
token = strtok_r(NULL, delimiter, &state),
i++, size *= i) {
tokens = (char **) realloc(tokens, size);
if(tokens == NULL) {
printf("Realloc failed.");
return;
}
tokens[i] = state;
}
return tokens;
}
當我打電話:
char * IPNumber = "127.0.01";
char * delimiter = ".";
char ** parts = split(delimiter, IPNumber);
它給segmentation fault
。
我正在尋找解釋如何獲得(計算)在realloc()
函數的第二個參數中使用的大小值。提前致謝。
如果你解釋你正在嘗試做什麼,你會得到更好的答案。 – IanGilham 2012-02-07 16:36:05
你是怎麼調用這個函數的? – cnicutar 2012-02-07 16:40:26
IanGilham,cnicutar查看我的編輯 – 2012-02-07 16:55:54