为什么我在指针操作中遇到访问冲突异常?

LEM*_*ANE 0 c++ .net-4.0

我在Windows 7.0 x64上使用C++ Visual Studio .Net 4.0.这只发生在while语句的第一个循环上.

int main()
{
  char *string = new char[11];

  string = "characters\0";

  toUppercase(string);

  return 0;
}



void toUppercase(char *stringPtr)
{
 while(*stringPtr != '\0')
 {
    if(*stringPtr >= 'a' && *stringPtr <= 'z')
    {
        *stringPtr = *stringPtr - 32; // this is the culprit
    }

    ++stringPtr;    
 }
}
Run Code Online (Sandbox Code Playgroud)

GMa*_*ckG 6

我怀疑你做的是这样的:

toUppercase("test");
Run Code Online (Sandbox Code Playgroud)

问题是"test"数组const char,不是char,所以无法修改.但是,由于非常愚蠢的弃用特殊转换,char*无论如何都可以将字符串文字视为.

(您的功能也无法测试toUppercase(0).)