I C++에서 다음과 같은 구조를 가지고 :할당 해제 구조
이 MAIN.CPP에서struct wrapper
{
// Param constructor
wrapper(unsigned int _id, const char* _string1, unsigned int _year,
unsigned int _value, unsigned int _usage, const char* _string2)
:
id(_id), year(_year), value(_value), usage(_usage)
{
int len = strlen(_string1);
string1 = new char[len + 1]();
strncpy(string1, _string1, len);
len = strlen(_string2);
string2 = new char[len + 1]();
strncpy(string2, _string2, len);
};
// Destructor
~wrapper()
{
if(string1 != NULL)
delete [] string1;
if(string2 != NULL)
delete [] string2;
}
// Elements
unsigned int id;
unsigned int year;
unsigned int value;
unsigned int usage;
char* string1;
char* string2;
};
의 내가이 구조의 개체에 대한 메모리를 할당 가정 해 봅시다 :
를wrapper* testObj = new wrapper(125600, "Hello", 2013, 300, 0, "bye bye");
포인터 연산과 구조 요소 중 하나를 가리키는 포인터를 사용하여 전체 개체를 삭제할 수 있습니까? 이 같은
뭔가 :
void* ptr = &(testObj->string2);
ptr -= 0x14;
delete (wrapper*)ptr;
나 자신을 테스트했습니다 분명히 그것은 작동하지만 난 그 delete testObj
에 해당하는 100 % 확실하지 않다.
감사합니다.
은 무엇인가 : 주어진 당신의 유형, 구조 멤버의 이름과 해당 멤버에 대한 포인터를 구조의 기본 주소를 줄 것이다이 매크로를 (내가 ... 내가 알고 ... 알고) 고려 '그림'? –
'testObj'를 지우고 싶다면'delete testObj;'만 쓰면됩니다. –
@ Code-Guru : 프로젝트 코드의 구조 요소였습니다. 나는 그것을 제거했습니다. 죄송합니다 – Daniel