问题描述
- C++ new 数组指针的问题,感觉十分诡异
-
char* myChar = new char[4]; myChar[0] = 'q'; myChar[1] = 'w'; myChar[2] = 'e'; myChar[3] = 'r'; myChar[4] = 't'; myChar[5] = ''; cout << myChar; 输出: qwert 竟然能正确的赋值和输出,可是这不是明显的越界了啊。难道c++没有防止越界的机制?这里的myChar变大了?
解决方案
越界是肯定的。但是由于越界的范围比较小,有时确实不会出错。
C++ 确实没有防止越界的机制,这个需要自己的代码来控制。
myChar 不会自动变大的。
解决方案二:
c++没有防止越界的机制,这里的myChar没有变大
解决方案三:
是越界了。这样做是存在风险的,C++没有防止越界的机制,需要代码控制。希望能够帮助你。
解决方案四:
myChar数组没有变大,只不过你越界使用了其他地址空间。
解决方案五:
myChar没有变大,只不过myChar[5]自动向后多取了一个字节,C++不保证是否越界的,开发者需要自己进行维护。
所以,在开发过程中一定要注意所申请数组的容量,防止越界。
解决方案六:
越界了。但是你运气好,刚好后面的地址可以访问。让你凑巧可以拿到正确结果
这就是c++的威力。可以让你访问,给予足够灵活性,当然也带来一些风险就是使用不当的话。会出现各种错误。
时间: 2024-09-12 03:48:25