- 1
- 2
CStringA * str = new CStringA; - создает и пашет на ура
CStringA * str = (CStringA *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CStringA)); часов 5 назад так же пахало на ура, помылся в душе и ... бля мистика возвращает неверный указатель
А за такой код руки бы оторвал, почему после new нет скобочек? Типа конструктор можно и не вызывать. Соответственно и во втором варианте конструктор не вызывается, а если хочется в создать не в куче, так можно написать new(указатель) CString();
каких таких скобочек? мне кажется ты что-то путаешь =)
память аллоцированная на куче содержит рандомные значения
Во-вторых, конструктор по умолчанию пишется обычно как раз для сброса значений.
LPVOID * chunk = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CStringA));
CStringA * str = new( chunk ) CStringA;