I am implementing a C++ project using MPI and I have a problem in sending a vector of char array from one process to another. In particular, I start with a vector of type string but, since there is no string type in MPI, I first convert it into char*. I was able to do it and I can print the values of the resulted vector on the first process but, afterwards, when I use MPI_Send and MPI_Recv, on the second process I get an error and I'm not able to retrieve the values out of the received vector.
This is a reproducible code that simulate my attempt:
#include "mpi.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(int argc, char **argv) {
  int rank, numprocs;
  int namelen;
  MPI_Init(NULL, NULL);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
  std::vector<std::string > strings;
  std::vector<char* > cstrings;
  if (rank==0) {
    strings.push_back("fe");
    strings.push_back("fo");
    
    for(int i=0; i<strings.size(); i++){
      string st = strings[i];
      cstrings.push_back(&st[0]);
    }
    for(int i=0; i<cstrings.size(); i++){
      cout << cstrings.data()[i] << endl;
    }
            
    MPI_Send(&cstrings[0], cstrings.size(), MPI_CHAR, 1, 0, MPI_COMM_WORLD);
  }
  if (rank==1) {
    cstrings.resize(2);
    MPI_Recv(&cstrings[0], cstrings.size(), MPI_CHAR, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
    
    for(int i=0; i<cstrings.size(); i++){
      cout << cstrings.data()[i] << endl;
    }
  }
  MPI_Finalize();
  return 0;
}
What is the problem? How can I solve it? Thanks in advance!
