回答編集履歴
1
追記
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`のみが持てばよいように感じます
|