我目前正在學習vulkan。在教程之一,我看到一個函數,大致具有以下功能:它是否定義良好的行爲返回一個const char *向量,填充函數
#define SOMESTRING "Hello World!"
std::vector<const char*> buildVector() {
std::vector<const char*> vec;
vec.push_back(SOMESTRING);
return vec;
}
當我看到這一點,我想知道:是這樣定義的行爲?字符串"Hello World!"
的內容是不是位於堆棧上,因此一旦函數返回就無效了?如果這是未定義的行爲,那麼執行此操作的正確方法是什麼?不幸的是,由於vulkan API,使用std::string
不是一個選項。
與'const char * stuff(){return SOMESTRING; }'。這裏的矢量並沒有做任何奇妙的事情。 – juanchopanza
字符串文字是靜態存儲持續時間的左值。 –