У меня есть эта структура в моем коде. часть «компилируется» кода:Ошибка с структурой инициализации в 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."
Я не понимаю, почему doens't work "defaultParams-> path = defaultPath". Может кто-нибудь объяснить?
Я держал пари несколько долларов, что 'work' является (не статический) локальный variable ... –
Кроме того, IDK, какая из проблем может быть, но 'malloc()' не работает хорошо в C++, он не вызывает конструкторы. Таким образом, простое невинное видение может привести к тому, что ваша программа попытается освободить мусор ... –
Также покажите нам некоторый компилируемый код, который на самом деле терпит неудачу. Вопрос слишком абстрактный, как сейчас. –