私は現在vulkanを学習しています。私はこれを見たとき関数内に埋め込まれたconst char *のベクトルを返すことはよく定義された振る舞いですか?
#define SOMESTRING "Hello World!"
std::vector<const char*> buildVector() {
std::vector<const char*> vec;
vec.push_back(SOMESTRING);
return vec;
}
は、私が思っていた:これは、動作を定義している?チュートリアルの一つで、私は、大きく以下のない機能を見て文字列の内容はスタックに置かれていないので、関数が返っても無効です。これが未定義の振る舞いであれば、これを行う正しい方法は何でしょうか?残念ながら、std::string
を使用することは、エンバカンAPIのためにオプションではありません。
'const char * stuff(){return SOMESTRING;と同じです。 } '。このベクターはここで何も魔法を使わない。 – juanchopanza
文字列リテラルは、静的な格納期間を持つ左辺値です。 –