C ++中未处理的异常

时间:2014-07-15 21:10:51

标签: c++ string visual-studio-2010 pointers string-literals

我收到此错误

Unhandled exception at 0x00091e11 in JobTest.exe: 0xC0000005: Access violation writing location 0x0009573c.

在此功能的第一行

void myFunction(char str[]) {

    str[0] = 'C';// here is a problem
    printf(str);
}

myFunction("Hello World");
在Visual Studio 2010中

。它是特定于编译器还是我做得很糟糕。 我也试过改变函数签名char * str。

1 个答案:

答案 0 :(得分:4)

字符串文字是不可修改的。您正在尝试修改函数myFunction中的字符串文字 字符串文字可能是共享的,可以存储在只读内存中(正如@Duplicator在他的评论中所说)。任何修改字符串文字的尝试都会调用未定义的行为

正如@MooseBoys建议的那样,您可以通过将其更改为:

来修复它
char msg[] = "Hello World"; 
myFunction(msg);