-2

可変サイズの char 配列を格納する配列が必要です。ベクトルなどを使用できますが、残念ながらこれは MPI プロジェクト用であり、MPI::COMM_WORLD.Send(...)関数を使用して送信できるように配列を使用する必要があります。

私のアイデアはこのリンクから来ています。

これは私が抱えている問題の簡単な例です:

char* arrayStorage[3]; //I want to store 3 char arrays of variable size!
int index = 0;

char array_1[RANDOM_SIZE] = {.....};
char array_2[RANDOM_SIZE] = {.....};
char array_3[RANDOM_SIZE] = {.....};

arraySorage[index] = array_1;
index++;    
arraySorage[index] = array_2;
index++;
arraySorage[index] = array_3;
index++;

私は人々がそのようなことについて話しているのを見mallocたことがありますが、ポインターについてはあまり知りません。malloc電話する必要がありますが、どこにあるのかわからfreeないので、今のところそれを避けています。

このコードは明らかに機能array_1しません。問題はインデックス変数内にあるようです。おそらく私は index++ を行うべきではなく、おそらく index += RANDOM_SIZE を行うべきですが、それも失敗します。array_2array_3

可変サイズのchar配列を配列に格納するにはどうすればよいですか?

4

1 に答える 1

2

malloc と free (または C++ では new と delete) を使用します。ベクトルも配列として扱うことができるので、ベクトルでもそれを行うことができます。

 char *str = "hello world";
 // need the +1 for null character
 arraySorage[0] = (char *)malloc (strlen(str) + 1); 
 strcpy(arraySorage[0], str);
 ...
 free(arraySorage[0]);

新規/削除あり

arraySorage[0] = new char[strlen(str)+1];

strcpy(arraySorage[0], str);
...
delete arraySorage[0];

vector と std::string を使用することは、メモリ リークの防止や例外の適切な処理など、さまざまな理由から正しい C++ の方法です。

于 2012-10-05T16:12:16.957 に答える