我有一個類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