C/C++ Char指针崩溃

THE*_*TOR 4 c c++ crash pointers

假设一个函数返回一个固定的"随机文本"字符串就像

char *Function1()
{ 
return “Some text”;
}
Run Code Online (Sandbox Code Playgroud)

如果它意外地试图改变价值,程序可能会崩溃

Function1()[1]=’a’;
Run Code Online (Sandbox Code Playgroud)

函数调用尝试执行此操作后的方括号会导致程序崩溃吗?如果您对此熟悉,我们将非常感谢您的解释!

Die*_*lla 12

您在函数中返回的字符串通常存储在进程的只读部分中.尝试修改它将导致访问冲突.(编辑:严格来说,它是未定义的行为,在某些系统中它会导致访问冲突.谢谢,约翰).

这种情况通常是因为字符串本身与应用程序的代码一起被硬编码.加载时,会建立指针以指向包含文字字符串的进程的只读部分.实际上,无论何时在C中写入一些字符串,它都被视为const char*(指向const内存的指针).

  • 您不能说它会导致访问冲突.C++对访问冲突一无所知.所有你真正可以说的是它会唤起未定义的行为 (4认同)
  • @rstevens:在Windows上它可能是GPF.在linux上它可能是段错误.在我的手机上它可能会打电话给我母亲.点是它的UB. (2认同)