我需要一个数组来存储可变大小的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()指针(使用向量的大小),这显然等同于自己分配数组并传递它。 –