存储具有不同列大小的动态分配的二维数组
Store dynamic allocated 2D array with different column size
int n;
cin >> n;
char** matrix = new char*[n];
for (int i = 0; i < n; i++)
{
cin >> (matrix[i] = new char);
}
但是当我输入
3个
45523
36
578
遇到断点,程序停止
但是如果我输入
3个
45523
368
578
效果很好
不确定为什么会这样
我不是 C++ 专家(请不要误会,如果您的代码需要 C++ 编译器,那么这纯粹是一个 C++ 问题),但我怀疑正在发生的事情是您正在分配一个 char
每个字段,并溢出该单字节缓冲区。如果您为每个字段分配八个字节,情况可能会有所不同,而是像这样:cin >> (matrix[i] = new char[8]);
...更好的是,使用 std::vector<char>
是最明智和最 C++ 风格的(但是,您仍然需要为示例中的字段保留八个字节)或 std::string
.
int n;
cin >> n;
char** matrix = new char*[n];
for (int i = 0; i < n; i++)
{
cin >> (matrix[i] = new char);
}
但是当我输入 3个 45523 36 578
遇到断点,程序停止
但是如果我输入 3个 45523 368 578
效果很好 不确定为什么会这样
我不是 C++ 专家(请不要误会,如果您的代码需要 C++ 编译器,那么这纯粹是一个 C++ 问题),但我怀疑正在发生的事情是您正在分配一个 char
每个字段,并溢出该单字节缓冲区。如果您为每个字段分配八个字节,情况可能会有所不同,而是像这样:cin >> (matrix[i] = new char[8]);
...更好的是,使用 std::vector<char>
是最明智和最 C++ 风格的(但是,您仍然需要为示例中的字段保留八个字节)或 std::string
.