delete *Texture できない
  2015/10/04(Sun) 13:11
newで確保したTextureの領域をdeleteしようとするとエラーが発生します
これは仕様でしょうか?




Texture* hoge = new Texture(L"hoge/hoge.gif");


//*** 中略 ***//


delete hoge; //エラー
記事編集
Reputeless  2015/10/07(Wed) 16:17
Siv3D では Texture を delete してもエラーは発生しません。おそらくコードの誤りです。
複数回 delete していないか、delete したポインタを別の場所で使用していないかご確認ください。
それでも症状が発生する場合は再現するコードを返信してください。

本来 Texture は内部にポインタがあり、参照カウントで管理されているので、
new / delete を使って生成と破棄のタイミングを管理する必要はありません。

以下のコードでアプリの終了時に Texture は解放されます。

# include <Siv3D.hpp>

void Main()
{
Texture texture(L"Example/Windmill.png");

while (System::Update())
{
texture.draw();
}
}

明示的に解放したい場合は以下のように release() メンバ関数を使ってください。

# include <Siv3D.hpp>

void Main()
{
Texture texture(L"Example/Windmill.png");

while (System::Update())
{
if (texture)
{
texture.draw();
}

if (Input::MouseL.clicked)
{
texture.release();
}
}
}
編集
件名
Re: delete *Texture できない
名前
コメント
画像添付


投稿修正キー (投稿を修正する時に使います)
画像認証 (右画像の数字を入力) 投稿キー

- WEB PATIO -