我在头文件中定义的结构:C++向量和结构问题的win32
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
你已经分配了'p-> returnData = new ret()'?无论如何,它看起来像你在栈上创建'v',然后在你的向量中存储一个指向它的指针;不会超过当前函数,所以如果它返回到其他地方,您需要改为'video * v = new video()'。 – Rup 2010-06-14 19:07:08
指针太多。 :(你将'&v'传递给一个向量......将会超出范围的东西的地址!你应该改变你的向量为'std :: vector
你可能需要'std :: wstring'作为'wchar_t'指针的替换 – Amnon 2010-06-14 19:17:25