클래스 RWLock이 있고 RWLock에 대한 포인터의 2 차원 벡터 인 vector<vector<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] = 벡터 (너비, NULL); " 두 번째로, 나는 1과 동등합니다. 나는 그 문제가 무엇인지 알 수 없습니다.
미리 감사드립니다.
편집 : 인터넷 연결없이 VM의 실제 코드를 쓰기 때문에 코드를 손으로 복사해야했습니다. 여기에있는 코드는 실제 코드와 일치합니다.
왜 안'보드를 할당 할 경우,
또는 [I]는 [J])을 (새으로 rwlock을 =; '? –
'j'가 다른 곳에 정의되어 있습니까? 내부 루프는'i' 대신'j'를 사용해야합니다. – Jacob
두 번째 루프도 너비가 아니라 높이 여야합니다. 어쨌든 j가 선언 되었습니까? –