存储具有不同列大小的动态分配的2D阵列

时间:2015-09-15 13:05:28

标签: c++ arrays cin

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

它工作正常 不确定为什么会发生这种情况

1 个答案:

答案 0 :(得分:0)

我不是C ++方面的专家(如果你的代码需要一个C ++编译器,那么它不是一个错误,那么它纯粹是一个C ++问题),但我怀疑你发生了什么&# 39;每个字段重新分配一个char,并溢出该一个字节的缓冲区。如果你为每个字段分配了8个字节,那么事情会有所不同,相反,如下所示:cin >> (matrix[i] = new char[8]); ...更好的是,它是最明智的,大多数C ++都可以使用std::vector<char>(但是,您仍然需要为示例中的字段保留八个字节)或std::string