C++ C+中的初始化结构出错+;

C++ C+中的初始化结构出错+;,c++,struct,structure,C++,Struct,Structure,我的代码中有这个结构。 代码的“可编译”部分: #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

我的代码中有这个结构。 代码的“可编译”部分:

#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;
}
当我设置所有参数(除“字符串”)时,所有参数都正常工作。 但是,当我尝试将'string'parametr(或其他类型而不是此类型,对于ex myClass类型或其他类型变量)初始化时,我出现了错误

"Unhandled exception at 0x0FDEEAD0 (msvcr110d.dll) in ConsoleApplication1.exe:
0xC0000005: Access violation when writing to the address 0xCDCDCDCD."

我不明白,为什么“defaultParams->path=defaultPath”不起作用。有人能解释一下吗

这里使用一个注册表类obj,它初始化值second obj, 如果不使用赋值运算符重载,则无法初始化obj。
首先,你应该让作业负担过重

我认为马洛克可能有问题。因为malloc只是为对象分配了一些内存。 代码中的字符串可能超出分配的内存边界。因此存在访问冲突


尝试使用新而不是Malc。

< p>您在Mulalc上使用C++类STD:String:在

中的字符串 malloc对构造函数一无所知,因此不会初始化字符串

使用新的/DELL,避免在C++程序

中使用MalC/C++/Melo/FL.
params* defaultParams = new params;
或者最好

std::unique_ptr<params> defaultParams(new params);
std::unique_ptr defaultParams(新参数);

<代码> >我打赌,$>代码> Works/Cuff>是一个(非静态)局部变量……,IDK还有多少问题,但是 MalCube()/Cuth>在C++中不太好,它不调用构造函数。因此,一个看似简单的赋值可能会导致您的程序尝试释放垃圾……另外,请向我们展示一些实际失败的可编译代码。这个问题现在太抽象了。解释一下确切的问题。谢谢!你的建议也很有用