C ++向量和结构问题win32

时间:2010-06-14 19:03:46

标签: c++ winapi vector struct

我的头文件中定义了一个结构:

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

1 个答案:

答案 0 :(得分:3)

我猜想pp->returnData是未初始化/无效的指针。

此外,这不会导致您的崩溃,但一旦解决了当前问题,它就会发生:请注意将指针返回到本地变量。一旦你的函数超出范围,本地向量将被销毁,&v将成为无效指针。如果您希望向量存在于当前函数的范围之外,那么您将需要在堆上分配它:

vector *v = new video();
...
p->returnData->videos.push_back(v);