我正在尝试将 c 字符串向量转换为 c 字符串数组。我试过这个,但它似乎不能正常工作:
int glfxGetProgramList(int effect, char** progList, int* count)
{
std::vector<char*> list;
gEffects[effect]->GetProgramList(list);
fprintf(stderr, "Lib Output: %s\n", list[0]);
progList = &list[0];
int size = list.size();
memcpy(count, &size, sizeof(int));
}
从 stderr 返回的调试输出在函数内部是正确的。但是,当我在项目中使用此函数并尝试输出列表中的第一项时,它会因分段错误而崩溃。这是我项目中的代码:
char ** list;
int size;
glfxGetProgramList(effect, list, &size );
fprintf(stderr, "Output: %s\n", list[0]);
知道我做错了什么吗?
编辑:
我想我将不得不从问题的根源开始。有一个私有地图数组,我试图从中获取名称列表。下面是 GetProgramList 的代码:
unsigned Effect::GetProgramList(vector<char*>& list) const
{
for(map<string,Program*>::const_iterator it=m_programs.begin(); it!=m_programs.end(); ++it)
list.push_back( (char*)it->first.c_str() );
}