我在頭文件中定義的結構: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