メモリとポインタと配列と
malloc()を使用して可変の変数を作り加工。
後々に参照するためにポインタの配列に格納したいと考えております。
malloc()を行った後は必ずfree()にてメモリを開放せねばなりませんが、開放するとポインタの配列に格納した値も消えてしまいます。
だからといって開放せずにいるとメモリリークが起きてしまいます。
この様な場合はどのようにすればよろしいのでしょうか?
大体以下のような処理を考えております。
ご教授願えれば幸いです。
****************************************
char *p[100];
for(int i=0;i<100;i++) {
char *word1 = "あいう";// ここでは固定文字を代入しているが、実際には何桁の文字列が入るかは不明。
int size = strlen(word1) + 1;
char *memo1 = (char *)malloc(size);
if (memo1 == NULL) {
printf("メモリを割り当てられません\n");
exit(1);
}
strcpy(memo1, word1);
//・
//・ *memo1 を利用した処理。
//・
char *word2 = "abc";// ここでは固定文字を代入しているが、実際には何桁の文字列が入るかは不明。
size = strlen(word1) + 1 + strlen(word2) +1;
char *memo2 = (char *)malloc(size);
if (memo2 == NULL) {
printf("メモリを割り当てられません\n");
exit(1);
}
memset(memo2, 0x00, size); //初期化
strcpy(memo2, word2);
strcat(memo2, "\t");
strcat(memo2, memo1);
p[i] = NULL;
p[i] = memo2;
free(memo2);
free(memo1);
}
****************************************
宜しくお願いします。