gpt4 book ai didi

c++ - 如何在 SimGrid 中创建带有 vector 的进程?

转载 作者:行者123 更新时间:2023-11-28 05:29:20 25 4
gpt4 key购买 nike

我想用 SimGrid 中的数据创建一个流程,所以我这样做:

int worker(int argc, char *argv[])
{
vector<string> vector1;
vector1.push_back("word");
MSG_process_create("x", executor, &vector1, MSG_host_self());
return 0;
}

但是在executor中我有一个段错误:

int executor(int argc, char* argv[]){
MSG_process_sleep(10);
vector<string> *data = (vector<string>*) MSG_process_get_data(MSG_process_self());
XBT_INFO("%s", data->front().c_str());
return 0;
}

我知道这是因为当 worker 函数结束并且 vector1 消失时 vector1 超出范围,所以“没有 vector1 数据“在执行者中。

如何正确地做到这一点?

最佳答案

我想你只是想在这里使用一个指针:)

int worker(int argc, char *argv[])
{
vector<string>* vector1 = new vector<string>();
vector1->push_back("word");
MSG_process_create("x", executor, vector1, MSG_host_self());
return 0;
}

int executor(int argc, char* argv[]){
MSG_process_sleep(10);
vector<string> *data = (vector<string>*) MSG_process_get_data(MSG_process_self());
XBT_INFO("%s", data->front().c_str());
delete data;
return 0;
}

关于c++ - 如何在 SimGrid 中创建带有 vector 的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39880055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com