나는 다음과 같은의 말로 묻는 질문을 받았습니다 : "변수 q 만 사용하여 동적으로 구조체 포인트 내부의 정수 포인터에 메모리를 할당하십시오". 나는 다음과 같은 코드를 작성했지만 동적으로 할당 된 정수를 삭제할 수 없다. 런타임에 존재하지 않는 무언가를 삭제한다고 말하는 런타임 오류가 발생한다. 할당 후 ((* q) -> x -> x) 및 srcX의 메모리 주소를 확인했으며 주소가 같습니다. 어떻게이 동적으로 할당 된 정수를 해제 할 수 있습니까?다른 구조 내의 구조 내부에서 포인터 할당 해제
#include <iostream>
using namespace std;
struct point {
int *x;
int *y;
};
struct line {
struct point *x;
struct point *y;
};
void create_line (int srcX, int srcY, int dstX, int dstY) {
struct line *p;
struct line **q = &p;
(*q) = new line;
(*q) -> x = new point;
(*q) -> x -> x = new int;
(*q) -> x -> x = &srcX;
cout << *((*q)->x->x) << endl;
delete (*q)->x->x; // Causing run-time error
delete (*q)->x;
delete (*q);
}
int main(){
create_line(2,3,7,8);
return 0;
}