私は自分のコードでメモリリークを避けようとしています。 pImage内の値を失うことなく、pElement、lineおよびpSecondの割り当てを解除する必要があります。なぜなら、私はそれらの値を自分のプリント機能の中にプリントする必要があるからです。私は必要な構造体ポインタを解放する方法
私の追加機能には、GraphicElement * pElement、struct GraphicElement * pSecond、struct Point pointが含まれています。
私は構造体ごとにmallocを使ってメモリを割り当てた後、値を追加してから最終値をpImageに渡します。すべての私の他の関数は、私が常に3つのメモリリークで終わるという事実に加えて完全に機能します。私は無料ではなかったので(p秒); ....無料(pElement)...無料(行);
関数を終了してから値をpImageに渡す前に解放しようとするとします。私の値はすべて消去されます。
追加機能内でこれらの値をローカルで解放するにはどうすればよいですか?私はローカルに自分のadd関数の内部でこれらの値を解放することができますどのように
struct Point
{
int x, y;
};
struct Line
{
Point start;
Point end;
};
struct GraphicElement
{
enum{ SIZE = 256 };
unsigned int numLines; //number of lines
Line* pLines; //plines points to start and end
char name[SIZE];
};
typedef struct
{
unsigned int numGraphicElements;
GraphicElement* pElements; //the head points to pLines
} VectorGraphic;
void InitVectorGraphic(VectorGraphic*); //initializes pImage->pElement
void AddGraphicElement(VectorGraphic*); //Used to add
void ReportVectorGraphic(VectorGraphic*); // prints pImage contents
void CleanUpVectorGraphic(VectorGraphic*); //deallocates memory
あなたpImageは、それらの値を使用しているように聞こえます。なぜ彼らはあなたの追加で解放される必要がありますか?あなたの 'CleanUpVectorGraphic'関数でそれらを解放してみませんか? – NullEntity
structポインタが必要な場合は、なぜそれを最初から解放したいのですか? IMO、私はあなたが達成しようとしていることを理解していないので、あなたがしたいことを説明する必要があります。 –
@Disillusioned私は別の関数からそれらの構造体にアクセスできますか?私は自由にできることを知っている(pImage)。その内容はすべてループ内にあります。しかし、line、pSecond、pElementはどうでしょうか?クリーンアップ機能からどのようにアクセスするのですか? – Calidreaminn