存储具有不同列大小的动态分配的二维数组

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.