簡體   English   中英

C++ 中有沒有辦法確定一個字符串是“實習”還是在一個只讀的持久位置?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM