구조체로 new하고 char*로 타입캐스팅한후 delete할경우 문제될수 있나요?

siba555의 이미지

AAA구조체를 new하고 char*로 형변환후 char*를 delete할경우 문제가 될수 있나요?
답변 부탁드리겠습니다. 수고하세요.

struct AAA
{
int aa;
int bb;
char cc[1024];
};

int _tmain(int argc, _TCHAR* argv[])
{
AAA *aaa = new AAA;

char *bbb = (char*)aaa;

delete bbb;

return 0;
}

pokev25의 이미지


char단위로 제어가 되는 구조체라면 별문제가 없어 보일 수도 있지만

아마도 문제가 생기지 싶습니다.

delete 와 delete [] 의 차이점을 아신다면요.

klara의 이미지

'당연히' 문제가 있을수 있습니다.
어째서 C++에서는 malloc/free가 아닌 new/delete를 쓰는지 생각해보세요.

siba555의 이미지

답변 감사합니다. 그럼 이런경우는 어떨까요?
답변 감사합니다. 그럼 아래처럼 사용시에는 어떤가요? 통신모듈을 만드는데 소켓전송시 char버퍼에 구조체를 담아보낼려고 하다보니 아래처럼 써야할것 같은데요..

struct AAA
{
int aa;
int bb;
char cc[1024];
};

int _tmain(int argc, _TCHAR* argv[])
{
char *aaa = new char[sizeof(AAA)];

AAA *bbb = (AAA*)aaa;
bbb.aa = 100;
bbb.bb = 1000;
strcpy(bbb.cc,"test..");
delete[] aaa;
return 0;
}

klara의 이미지

직렬화를 하세요.