teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2021/06/30 22:51

投稿

asm
asm

スコア15149

answer CHANGED
@@ -10,6 +10,7 @@
10
10
  そもそも`std::shared_ptr<GLchar*>`は以前も指摘しましたが意味が違います。
11
11
  `Shader`のポインタを管理するための`std::shared_ptr<Shader>`なのと同様に
12
12
  `GLchar`へのポインタを管理するためには`std::shared_ptr<GLchar>`(もしくは`std::shared_ptr<GLchar[]>`)を用います。
13
+ (**追記:** `deleter`の問題があるのでC++17以降では`std::shared_ptr<GLchar[]>`を用いた方がいいですね。)
13
14
  `std::shared_ptr<GLchar*>`は`GLchar*`**へのポインタ**を管理しますので`GLchar*`自体は寿命が切れている事もありえますしメモリリークもします。
14
15
  また、所有権を他と共有しないのであれば`std::vector<GLchar>`を持った方がいいです。
15
16
  個人的にはシェーダーファイルの所有権は`Shader`のみが持てばよいように感じます