基本上我有一個類A,它在構造時創建一個數組。刪除指向創建數組的類的指針
class A
{
public:
A (float height, float width, BYTE* data)
{
setsize(height,width);
mydata = CreateNewBuffer(sizes);
setdata(data);
}
~A()
{
}
void setsize(float height, float width)
{
sizes.cx = width;
sizes.cy = height;
}
BYTE* CreateNewBuffer (SIZE sImage)
{
return new BYTE [sImage.cx * sImage.cy];
}
void setdata(BYTE* data)
{
memcpy(threatdata,data,sImage.cx * sImage.cy);
}
}
我在更大的類中創建一個指向這個類:
A* mypointer;
我初始化在一個第三類使其通過一個函數之後:
3rdClass::instance()->myfunction(mypointer)
和在函數內部myfunction()我設置了一個布爾值,表明這個類是構造的
mypointer = new A(height,width,data);
wasconstructed = true;
現在,下一次我傳遞指向函數myfunction()
的指針,我檢查該類是否已經構建,如果是,我想刪除它,以便創建一個沒有丟失內存的新類。
什麼是正確的方式做到這一點:我想基本的東西,像
,
if (3rdClass::instance()->checkifconstructed()){
delete mypointer; //(or even delete [] mypointer but then i get heap corruption)
mypointer = NULL;
}
但是,這似乎並沒有工作。
你是什麼意思?「我想刪除它,以便創建一個沒有丟失內存的新文件。」你想回收緩衝區? – Bernhard
是的,但問題是,高度和寬度每次都改變 – Simon