指针中的Char数组大于初始值
Char Array in Pointer larger than initialized?
我已经创建了一个缓冲区系统,但是与c#相比,确定从缓冲区读取的字符串相当困难。让我们考虑以下为数组创建char*的代码:
int Size = 6;
char* String = new char[ Size ]();
将创建一个指针,指向一个指定大小的全新数组。但是,如果我尝试访问超出该大小的索引,则不会显示越界错误:
String[ Size + 1 ];
相反,例如,我可以"打印"数组,就好像它是一个字符串:
String[ 0 ] = 'S';
String[ 1 ] = 'T';
String[ 2 ] = 'R';
String[ 3 ] = 'I';
String[ 4 ] = 'N';
String[ 5 ] = 'G';
cout << String << endl;
但是,这不仅会打印原数组中的字符,还会打印不在原数组中的随机字符,例如索引中超出数组边界的字符:(示例)
STRING&^%(^$$#%$*
代替:
STRING
为什么会发生这种行为,我该如何避免它?
原因是您的字符串不是NUL
终止的。初始化Size
为7
和String[ 6 ] = ' ';
相关文章:
- 大于65535的C++数组[size]引发不一致的溢出
- 数组大于指定大小(C++)
- 第 k 个最小元素 - 不能创建大于 k 大小的数组
- 如果用户输入的输入大于 char 数组,则 cin.getline 会跳过输入提醒
- 如何在给出前两个数字的级数中找到大于 x 的第 n 个最小子数组总和?
- 将大于k的数组元素导入到另一个数组C 中
- CUDA 将大于线程计数的数组复制到共享内存
- 2d 数组中大于 10^5 的值未在范围内声明
- 为什么在 c++ 中计算重复元素时,我的计数值大于数组中的元素数
- 为什么gcc允许字符串文字大于数组的char数组初始化
- C :创建大于大小的数组索引,不会引起错误
- 用 C++ 编程.字符数组的大小为 5,但也接受大于 5 个字符的值
- 为什么要分配大小为 1 的数组大于请求的大小
- 能够访问索引大于数组长度的元素
- 当 cin.getline() 的第二个参数大于数组长度时,不可预测的字符串长度
- 如何检查数组的所有元素是否都大于零C++
- 尾递归函数,用于计算数组中大于平均值的所有数字
- 基于用户大小的数组函数,如果值大于90,则输出一些内容
- 字符数组的字符串长度大于其大小.如何避免
- c++多维数组不能大于0