当另一个数组是内存集时,内存集是否会更改数组长度?
Does memset change the array length when another array is memset?
program-1->
#include <iostream>
#include <cstring>
int main()
{
char a[4];
memset(a, 'A', sizeof a);
std::cout << a << '!';
return 0;
}
程序 1 输出我期望的AAAA!
但是一旦我引入另一个字符串(字符数组(,事情就会改变!
程序-2->
#include <iostream>
#include <cstring>
int main()
{
char a[4], b[4];
memset(a, 'A', sizeof a);
memset(b, 'B', sizeof b);
std::cout << a << '!';
std::cout << ' ' << b << '?';
return 0;
}
程序 2 输出AAAABBBB! BBBB?
.这意味着,这里a
AAAABBBB
但我宣布长度为 4!这到底是怎么回事呢?当另一个数组被memset
时,memset 会改变数组长度吗?!
我的构建线是g++ -Wall -Wextra -std=c++17 main.cpp -o main
内存集是否更改了数组长度
不。内存集不会更改数组长度。事实上,任何数组的长度在数组的生命周期内都不会改变。
这到底是怎么回事呢?
您使用的流插入运算符具有字符串必须以 null 结尾的前提条件。违反前提条件会导致未定义的行为。
将非 null 终止的字符串插入字符流中。这违反了前提条件,程序的行为是未定义的。
相关文章:
- unordered_map 与地图与数组 - 内存分析
- 字符指针数组内存分配
- SystemC sc_signal数组内存边界
- 在分配指向数组内存地址的指针时,为什么不必使用地址运算符?
- 指向结构的指针的 2D 数组.内存访问问题
- 连接数组,数组 1 内存消失C++
- 无法使用 GetProcessMemoryInformation 测量静态数组内存使用情况
- 2D 数组内存分配 (malloc) 返回 NULL
- 删除指针成员变量的数组内存
- C++类数组内存重新分配
- 处理静态数组内存C++的内存不足情况
- 为什么析构函数不释放数组内存?
- 获取 std::array 底层数组内存大小的最简单方法?
- C 4D数组内存Deallocation速度很慢
- char*数组内存泄漏
- 数组内存地址总是按最小到最大的顺序排列吗
- C++中的Char*数组内存分配
- 动态数组内存分配如何工作
- JNA 本机函数调用和具有双**指针/数组内存分配的结构
- 了解字符数组内存分配