我想返回char *,但我不希望函數用戶刪除free()的內存。如何在沒有免費()或刪除的情況下返回char *?
我有以下幾點:
namespace name_space
{
char* function(unsigned int i);
}
char* name_space::function(unsigned int i)
{
char buffer[MESSAGE];
strerror_s(buffer,errno);
switch(i_exception)
{
case MESSAGE_RETURN: return "No free or delete needed";
case ERRNO_ERROR: return buffer;
default: return "UNKNOWN";
}
}
當我返回 「MESSAGE_RETURN」 字符串沒有免費的()或刪除是必要的。但是,我怎麼能不使用新的或malloc返回緩衝區?
使用['標準:: string'] (http://en.cppreference.com/w/cpp/string/basic_string)的所有字符串? –
返回一個指向棧上的東西的指針?我*聞*訪問衝突 – Nyashes
這是不可能的,以避免用戶釋放內存。您可以通過返回釋放析構函數中的內存的C++對象來避免* explicitley *釋放內存。當對象超出範圍時,它將被刪除並且內存將被釋放。這個對象有一個名字:'std :: string'。 – harper