質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

3217閲覧

[Opengl] corrupted size vs. prev_size Aborted (core dumped) エラーの原因が知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/04/30 02:47

提示の端末画面ですが以下のエラーが発生しますこれは何が原因なのでしょうか?デバッグした結果以下の画像ロード関数をコメントアウトすると普通に動くためこの関数問題なのですがこの何が悪いのでしょうか?ファイルが読み込めない時はエラーメッセージを表示するよにしているためファイルが読み込めないエラーということはないはずです。ファイルが破損?しているということでしょうか?ファイルを表示させていましたが普通に表示されます。

環境

OS: ubuntu

参考サイト:https://ja.stackoverflow.com/questions/82425/corrupted-size-vs-prev-size

端末
shigurechan@shigurechan-System-Product-Name:~/prg/2D_GameProject$ sh editor.sh g++ -O2 -g -c -MMD -MP source/Stage.cpp -o object/Stage.o g++ -O2 ../FrameWork/object/Sprite.o ../FrameWork/object/Transform.o ../FrameWork/object/Camera.o ../FrameWork/object/Init.o ../FrameWork/object/Resource.o ../FrameWork/object/GameObject.o ../FrameWork/object/Shader.o ../FrameWork/object/Window.o object/Entry.o object/Game.o object/Main.o object/Player.o object/Stage.o object/Brick.o -o Editor -ldl -lGLESv2 -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -ldl -lX11 corrupted size vs. prev_size Aborted (core dumped)
画像ロード関数

cpp

1 2// ##################################### テクスチャをロード ##################################### 3FrameWork::Texture FrameWork::LoadTexture(const char* fileName) 4{ 5 Texture texture; 6 7 glm::ivec2 size; 8 int channel; 9 10 unsigned char* data = NULL; 11 data = stbi_load(fileName, &size.x, &size.y, &channel, 0); 12 13 texture.size = size; 14 15 if (data == NULL) 16 { 17 std::cerr << "画像が見つかりません: " << fileName << std::endl; 18 assert(0); 19 } 20 21 glGenTextures(1, &texture.ID); //テクスチャIDの生成 22 glBindTexture(GL_TEXTURE_2D, texture.ID); // IDバインド 23 24 //テクスチャ生成 25 26 if (channel == 4) 27 { 28 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size.x, size.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); 29 } 30 else if (channel == 3) 31 { 32 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, size.x, size.y, 0, GL_RGB, GL_UNSIGNED_BYTE, data); 33 } 34 else if (channel == 2) 35 { 36 glTexImage2D(GL_TEXTURE_2D, 0, GL_RG, size.x, size.y, 0, GL_RG, GL_UNSIGNED_BYTE, data); 37 } 38 else if (channel == 1) 39 { 40 glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, size.x, size.y, 0, GL_RED, GL_UNSIGNED_BYTE, data); 41 } 42 else 43 { 44 std::cerr << "未対応の形式のチャンネル数です: " << fileName <<" "<< "チャンネル数: "<<channel<< std::endl; 45 assert(0); 46 } 47 48 // テクスチャの補間設定 49 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 50 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 51 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 52 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 53 glBindTexture(GL_TEXTURE_2D, 0); 54 55 texture.data = data; 56 57 return texture; 58 59} 60

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2022/04/30 10:45 編集

聞くだけ聞いて用がすんだら礼も言わず削除か。
guest

回答1

0

以下のエラーが発生しますこれは何が原因なのでしょうか?

エラー自体はヒープ破壊を検出したときのメッセージのようですね。

なんとなくですが、stbi_load で確保したメモリを使用し終わった後に開放していない、とかではないでしょうか?
下記記事によると stbi_image_free で開放する必要があるようです。

■ stbライブラリで画像読み込み
https://suzulang.com/stb-library-image-read/

投稿2022/04/30 06:55

cx20

総合スコア4633

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問