char *
私は、標準入力からの文字列を保持するために動的に割り当てられた配列を使用しようとしている私のコードから以下のスニペットを持っています。
char **reference
reference = calloc(CHUNK, sizeof(char *));
一時的な静的配列を使用して最初に から文字列を格納しstdin
、次に特定の条件に基づいて の配列にコピーしますchar *
。実行時に個々にメモリを割り当てchar *
ています。
reference[no_of_ref]=malloc(strlen(temp_in) + 1);
reference[no_of_ref++]=temp_in;
// printf(" in temp : %s , Value : %s , Address of charp : %p\n",temp_in,reference[no_of_ref-1],reference[no_of_ref-1]);
memset(&temp_in,'\0',sizeof(temp_in));
pre_pip = -1;
}
/*If allocated buffer is at brim, extend it by CHUNK bytes*/
if(no_of_ref == CHUNK - 2)
realloc(reference,no_of_ref + CHUNK);
sono_of_ref
は、最終的に受信した文字列の総数を保持します。例 20.しかし、配列全体reference
を出力して各文字列を表示すると、最後に来たのと同じ文字列が得られ、20回出力されます。