所以,我想更好地掌握 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 )。我主要只是想知道这些情况是否会导致内存管理或数据损坏问题。