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

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

新規登録して質問してみよう
ただいま回答率
87.20%
C++

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

解決済

デバッガを見ても[Segmentation fault (コアダンプ)]の原因がわからない。

退会済みユーザー

退会済みユーザー

総合スコア0

C++

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

2回答

-1評価

0クリップ

700閲覧

投稿2022/02/03 06:34

編集2022/02/04 09:10

提示コードの///コメント部内部のコードですがこの関数で以下のエラーが発生しますこれはなぜでしょうか?デバッガで原因を調べましたが何が原因なのかわかりません。

調べたこと。試したこと

デバッガで何が原因なのかを調べました。
///コメント部内部の関数をコメントアウトしても実行画面を閉じると同じエラーが表示されます。
オブジェクトファイルを削除
画像ファイルは存在しています。

Game.cpp

cpp

#include "../header/Game.hpp" Game::Game() : Actor() { position = glm::ivec2(100,100); //////////////////////////////////////////////// up_sprite = FrameWork::LoadTexture("Asset/texture/up.png"); /////////////////////////////////////////////// // down_sprite = FrameWork::LoadTexture("Asset/texture/down.png"); // left_sprite = FrameWork::LoadTexture("Asset/texture/left.png"); // right_sprite = FrameWork::LoadTexture("Asset/texture/right.png"); } void Game::Update() { if(FrameWork::GetKeyInput(GLFW_KEY_UP) > 0) { position.y++; } else if(FrameWork::GetKeyInput(GLFW_KEY_DOWN) > 0) { position.y--; } else if(FrameWork::GetKeyInput(GLFW_KEY_LEFT) > 0) { position.x--; } else if(FrameWork::GetKeyInput(GLFW_KEY_RIGHT) > 0) { position.x++; } } void Game::Renderer(const glm::mat4 view)const { // FrameWork::Renderer_Sprite(view,right_sprite,glm::vec3(position,0),glm::ivec2(0,0),glm::ivec2(64,32)); } Game::~Game() { }
Resource.cpp

cpp

// ##################################### テクスチャをロード ##################################### FrameWork::Texture FrameWork::LoadTexture(const char* fileName) { Texture texture; glm::ivec2 size; int channel; unsigned char* data = NULL; data = stbi_load(fileName, &size.x, &size.y, &channel, 0); texture.size = size; if (data == NULL) { std::cerr << "画像が見つかりません: " << fileName << std::endl; assert(0); } glGenTextures(1, &texture.ID); //テクスチャIDの生成 glBindTexture(GL_TEXTURE_2D, texture.ID); // IDバインド //テクスチャ生成 if (channel == 4) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size.x, size.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); } else if (channel == 3) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, size.x, size.y, 0, GL_RGB, GL_UNSIGNED_BYTE, data); } else if (channel == 2) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RG, size.x, size.y, 0, GL_RG, GL_UNSIGNED_BYTE, data); } else if (channel == 1) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, size.x, size.y, 0, GL_RED, GL_UNSIGNED_BYTE, data); } else { std::cerr << "未対応の形式のチャンネル数です: " << fileName <<" "<< "チャンネル数: "<<channel<< std::endl; assert(0); } // テクスチャの補間設定 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glGenerateMipmap(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, 0); stbi_image_free(data); return texture; }
Console

console

shigurechan@shigurechan-System-Product-Name:~/prg/TopDownGame$ gdb ./Game GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./Game... (gdb) run Starting program: /home/shigurechan/prg/TopDownGame/Game [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7fffec8fb700 (LWP 20806)] [New Thread 0x7fffe7fff700 (LWP 20807)] Thread 1 "Game" received signal SIGSEGV, Segmentation fault. 0x00007ffff78f08a2 in __GI___libc_free (mem=<optimized out>) at malloc.c:3124 3124 malloc.c: そのようなファイルやディレクトリはありません. (gdb) bt #0 0x00007ffff78f08a2 in __GI___libc_free (mem=<optimized out>) at malloc.c:3124 #1 0x00007ffff761301d in _XReply () from /lib/x86_64-linux-gnu/libX11.so.6 #2 0x00007ffff76100ed in XTranslateCoordinates () from /lib/x86_64-linux-gnu/libX11.so.6 #3 0x00005555555b38a0 in processEvent () #4 0x00005555555b6f77 in _glfwPollEventsX11 () #5 0x00005555555a7b4b in glfwPollEvents () #6 0x0000555555596179 in FrameWork::Window::operator bool (this=0x5555557b1c30) at FrameWork/source/Window.cpp:316 #7 0x000055555559c108 in main () at source/Main.cpp:30 (gdb) run The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /home/shigurechan/prg/TopDownGame/Game [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7fffec8fb700 (LWP 20810)] [New Thread 0x7fffe7fff700 (LWP 20811)] Thread 1 "Game" received signal SIGSEGV, Segmentation fault. 0x00007ffff78f08a2 in __GI___libc_free (mem=<optimized out>) at malloc.c:3124 3124 malloc.c: そのようなファイルやディレクトリはありません. (gdb) bt #0 0x00007ffff78f08a2 in __GI___libc_free (mem=<optimized out>) at malloc.c:3124 #1 0x00007ffff761301d in _XReply () from /lib/x86_64-linux-gnu/libX11.so.6 #2 0x00007ffff76100ed in XTranslateCoordinates () from /lib/x86_64-linux-gnu/libX11.so.6 #3 0x00005555555b38a0 in processEvent () #4 0x00005555555b6f77 in _glfwPollEventsX11 () #5 0x00005555555a7b4b in glfwPollEvents () #6 0x0000555555596179 in FrameWork::Window::operator bool (this=0x5555557b1c30) at FrameWork/source/Window.cpp:316 #7 0x000055555559c108 in main () at source/Main.cpp:30 (gdb) quit A debugging session is active. Inferior 1 [process 20808] will be killed. Quit anyway? (y or n) y shigurechan@shigurechan-System-Product-Name:~/prg/TopDownGame$ ./Game Segmentation fault (コアダンプ) shigurechan@shigurechan-System-Product-Name:~/prg/TopDownGame$

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C++

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