"変数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;
}