我需要一個數組來存儲可變大小的char數組。我可以使用向量或其他任何東西,但不幸的是,這是一個MPI項目,我不得不使用一個數組,所以我可以使用MPI::COMM_WORLD.Send(...)
函數發送它。如何使數組存儲可變大小的char數組?
我的想法來自this link。
這是我有問題的一個簡單的例子:
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
,array_2
,array_3
都沒問題,但是當我試圖訪問它們時,我得到了垃圾。問題似乎在索引變量內。也許我不應該做索引++,也許我應該做index + = RANDOM_SIZE,但那也失敗了。如何在數組中存儲可變大小的char數組?
Nononononooooo。你應該簡單地學習如何使用malloc和free,這並不難。 – 2012-10-05 16:06:21
@BleepBloop:取決於。在MPI中,他實際上可能需要'MPI_Alloc_mem',有時完全等同於'malloc'。 – willglynn
我不知道MPI,但一個std :: vector的內容是一個數組,對吧?無論您將數據傳遞給哪個send函數,都可以將它傳遞給std :: vector <> :: data()指針(使用向量的大小),這顯然等同於自己分配數組並傳遞它。 –