我有一个类RWLock,我试图创建一个vector<vector<RWLock*>>
,指向RWLock的二维向量。 我在做什么是:如何填充矢量<矢量<Foo*>>?
vector<vector <RWLock*>> board = vector<vector <RWLock*>>(height);
RWLock* lock;
for(int i = 0 ; i < height ; ++i)
{
board[i] = vector <RWLock*>(width, NULL);
for(int j = 0 ; j < width ; ++j)
{
lock = (RWLock*) malloc(sizeof(RWLock*));
*lock = RWLock();
board[i][j] = lock;
}
}
当我运行这一点,但是,我得到
*** glibc detected*** ./test: free(): invalid pointer: 0x[some hexa] ***
我已经调试这足以知道,这个只要我打电话弹出“板[i] = vector(width,NULL);“第二次,我等于1.我只是无法弄清楚问题所在。
在此先感谢。
编辑:我不得不手动复制代码和内部循环(因为我在没有互联网连接的虚拟机中写入实际代码)是错误的。这里的代码现在匹配实际的代码。
为什么不'板分配[i] [j] =新rwlock中(); '? –
你有在别处定义的'j'吗?你的内循环应该使用'j'而不是'i'。 – Jacob
第二圈也应该是宽度,而不是高度。 j在哪里宣布呢? – 2011-11-06 13:21:40