У меня есть класс RWLock, и я пытаюсь создать vector<vector<RWLock*>>
, двухмерный вектор указателей на RWLock.Что я делаю:
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] ***
Я отладил это достаточно, чтобы знать, что это всплывает, как только яcall "board [i] = vector (width, NULL);"во второй раз, когда я равняюсь 1. Я просто не могу понять, в чем проблема.
Заранее спасибо.
РЕДАКТИРОВАТЬ: мне пришлось скопировать код вручную ивнутренний цикл (потому что я пишу реальный код на виртуальной машине без подключения к интернету) был неправильным.Код здесь теперь соответствует фактическому коду.