[英]Is there a way in C++ to determine if a string is "interned" or in a read only persistent location?
許多編譯器和加載器會將簡單聲明為“字符串”的字符串分配給只讀持久內存段。 有沒有辦法在運行時確定這一點,以便在需要持久性並且傳遞“const char *”參數時不分配重復項? 也是為了防止釋放它們。
一般的答案是否定的。 不是以便攜的方式。
因此,當(壞接口)函數返回靜態或動態分配的內存時,並沒有真正的方法來區分。 例如,
char* num_to_string(int number) {
static char buffer[5];
if(number < 10000) {
std::sprintf(buffer, "%d", number);
return buffer;
}
char* bigger_buffer = new char[50];
std::sprintf(bigger_buffer, "%d", number);
return bigger_buffer;
}
當他負責清理返回的內存時,使用上述函數將無法(不看實現)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.