通过引用传递的C++方法参数 - 内存问题

gil*_*rtc 2 c++ memory pass-by-reference

假设,

void proc(CString& str)
{
  str = "123";
}

void runningMethod()
{
  CString str="ABC";
  proc(str);
}
Run Code Online (Sandbox Code Playgroud)

据我所知,在runningMethod str的出口会自动解除分配; 在这种情况下,C++如何删除旧数据("ABC")?

谢谢,

吉尔.

GMa*_*ckG 5

"ABC"当你说时被覆盖了= "123".

在内部,字符串是一个字符数组.一开始,它创建了一个包含的新缓冲区{'A', 'B', 'C', '\0'}.当你分配时,它只是写'1''A',等等.

当它被破坏时,它删除了缓冲区.