我的头文件中定义了一个结构:
struct video
{
wchar_t* videoName;
std::vector<wchar_t*> audio;
std::vector<wchar_t*> subs;
};
struct ret
{
std::vector<video*> videos;
wchar_t* errMessage;
};
struct params{
HWND form;
wchar_t* cwd;
wchar_t* disk;
ret* returnData;
};
当我尝试将视频结构添加到视频矢量时*我得到访问冲突读取0xcdcdcdc1(videoName是@ 0xcdcdcdcd,在我分配之前)
//extract of code where problem is
video v;
v.videoName = (wchar_t*)malloc((wcslen(line)+1)*sizeof(wchar_t));
wcscpy(v.videoName,line);
p->returnData->videos.push_back(&v); //error here
答案 0 :(得分:3)
我猜想p
或p->returnData
是未初始化/无效的指针。
此外,这不会导致您的崩溃,但一旦解决了当前问题,它就会发生:请注意将指针返回到本地变量。一旦你的函数超出范围,本地向量将被销毁,&v
将成为无效指针。如果您希望向量存在于当前函数的范围之外,那么您将需要在堆上分配它:
vector *v = new video();
...
p->returnData->videos.push_back(v);