동적으로 생성 된 구조체의 잘못된 해제로 인해 발생하는 것으로 보이는 C++ 코드의 버그가 있습니다. 구조체의 형식에 :C++에서 새로운 구조체 삭제하기
typedef struct
{
char *value;
} Element;
typedef struct
{
int num;
Element **elements;
int *index;
} Container;
그들은 다음과 같이 작성됩니다
Element *new_element(int size)
{
Element *elem = new Element;
elem->value = new char[size];
return elem;
}
Container *new_container(int num)
{
Container *cont = new Container;
cont->num = num;
cont->elements = new Element*[num];
cont->index = new int[num];
}
이 해방하는 올바른 방법은 무엇입니까?
가장 쉬운 방법은 포인터를 사용하지 않고 "new"를 사용하지 않고 C++로 코드를 다시 작성하는 것입니다. 그러면 아무 것도 자유롭게하는 것에 대해 걱정할 필요가 없습니다. – juanchopanza
알다시피, 나는'new []'대신'std :: vector'를 사용하여 해결할 수있는 질문 목록을 유지하고있었습니다. 몇 달 전에 최신 상태로 유지하지 않으면 VPS의 하드 디스크가 꽉 차게됩니다. – rightfold