所以,我想更好地掌握C++中的字符串文字是如何工作的。我主要关心的是你将一个字符串文字的地址赋给一个指针,然后传递它。例如:C++字符串文字的安全性和可靠性如何?
char* advice = "Don't stick your hands in the toaster.";
现在我们可以说我只是通过在程序期间复制指针来传递这个字符串。当然,这可能不是一个好主意,但我很好奇幕后会发生什么。
再如,假设我们做的是返回一个字符串的函数:
char* foo()
{
// function does does stuff
return "Yikes!"; // somebody's feeble attempt at an error message
}
现在让我们说这个函数被调用非常频繁,而字符串是只用一半左右它被称为时间:
// situation #1: it's just randomly called without heed to the return value
foo();
// situation #2: the returned string is kept and used for who knows how long
char* retVal = foo();
在第一种情况下,究竟发生了什么?刚刚创建但未使用的字符串,并且从不释放?
在第二种情况下,只要用户找到需要的字符串就会被维护吗?当它不再需要的时候会发生什么......那么这个记忆会被释放吗(假设没有指向那个空间了)?
不要误解我的意思,我不打算使用这样的字符串。我打算使用容器来保持我的字符串(可能是std :: string)。我大多只是想知道这些情况是否会导致内存管理或数据损坏的问题。
C++字符串文字是完全安全可靠的。这是使用不安全可靠的字符串文字的程序员。 – 2010-04-29 21:16:25
这就是我的想法;我想我只需要保证。谢谢。 :) – 2010-04-29 21:21:16