我有我的代碼這種結構。 「可編譯」的部分代碼:錯誤使用C++初始化結構
#define MONITOR_TOPKEY HKEY_LOCAL_MACHINE
#define MONITOR_SUBKEY TEXT("SOFTWARE\\WMyRegistry")
struct params {
HKEY hMainKey;
LPTSTR hSubKey;
string path;
bool* runflg;
};
void _tmain(void) {
bool work = true;
string defaultPath = "HKEY_LOCAL_MACHINE";
defaultPath += "\\";
defaultPath += MONITOR_SUBKEY;
params* defaultParams = (params*) malloc(sizeof (params));
defaultParams->hMainKey = MONITOR_TOPKEY;
defaultParams->hSubKey = MONITOR_SUBKEY;
defaultParams->path = defaultPath; // HERE THERE IS A PROBLEM
defaultParams->runflg = &work;
}
當我設置的所有parametrs(除了「字符串」) - 各方面都不錯,工作。 但是當我嘗試inizialize「串」 parametr(或其他類型的,而不是這一點,前myClass的類型或其他別的類型的變量),我有錯誤
"Unhandled exception at 0x0FDEEAD0 (msvcr110d.dll) in ConsoleApplication1.exe:
0xC0000005: Access violation when writing to the address 0xCDCDCDCD."
我不明白,爲什麼好好嘗試一下工作「defaultParams-> path = defaultPath」。有人可以解釋嗎?
我敢打賭,一些美元:'work'是一個(非靜態)局部變量... – 2013-11-20 18:53:44
此外,IDK多少,可能是有問題的,但'的malloc()'不會用C很好地工作++,它不會調用構造函數。因此,一個簡單的無辜的任務可能會導致您的程序嘗試釋放垃圾... – 2013-11-20 18:57:47
此外,向我們展示一些實際上失敗的可編譯代碼。這個問題太過於抽象了。 –