我有我的代码这种结构。 “可编译”的部分代码:错误使用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
此外,向我们展示一些实际上失败的可编译代码。这个问题太过于抽象了。 –