次のような文字列配列があります。
char **strArray;
この配列はいっぱいで、この方法でその内容を印刷できます:
while(*strArray){
printf("%s\n",*(strArray++));
}
これは正常に動作します。しかし、私がこれを使用するとき:
while(*strArray){
process(*(strArray++));
}
配列の 2 番目の文字列でメモリ不足エラーが発生しました。最初の文字列に対して実行されますが、2 番目の文字列になると失敗します。
手伝ってくれてありがとう!
処理方法は以下のとおりです。
process(char *line)
{
char *server_id,*delimiter,*outputMessage,*capacity_str;
int capacity;
delimiter = " ";
strtok(line,delimiter);
server_id = (char *)strtok(NULL,delimiter);
capacity_str = (char *)strtok(NULL,delimiter);
capacity = atoi(capacity_str);
curr_server = (server *)malloc(sizeof(server));
curr_server->server_id = server_id;
curr_server->capacity = capacity;
curr_server->full_capacity = 0;
curr_server->next = head_server;
head_server = curr_server;
strcpy(outputMessage , "server added ");
strcat(outputMessage,server_id);
strcat(outputMessage,"~");
strcat(outputMessage,capacity_str);
strcat(outputMessage,"\n");
writeOutput(outputMessage);
}