我有一个2D数组,当我想为一个单元格赋值时,它会为相反的单元格分配相同的值。
以下是一个例子:
g.tab = new MyType*[g.width];
for(int i=0;i<g.height;i++) {
g.tab[i] = new MyType;
}
const int x = 0;
const int y = 1;
g.tab[x][y].b = true;
g.tab [0] [1]和g.tab [1] [0]的值将相同。
我不知道为什么......
感谢您的帮助。
答案 0 :(得分:3)
你正在分配width
个指针;然后为height
分配一个元素。您可能希望为每个元素分配height
个元素:
for (size_t i = 0; i < g.width; ++i) {
g.tab[i] = new MyType[g.height];
}
答案 1 :(得分:0)
我认为你的意思是:
for(int i=0;i<g.width;i++)
g.tab[i] = new MyType[g.height];
通过编写g.tab[i] = new MyType;
,您没有分配2D数组。
根据heigth
,i<g.heigth;
条件会编译但无法正常工作,或导致某种内存访问冲突。