0
C++에서 Vector 클래스를 만들고 있는데 문제가 있습니다.크기 4 배열의 쓰기가 잘못되었습니다.
==23391== Invalid write of size 4
==23391== at 0x401CAB: IntVector::IntVector(int, int) (IntVector.cpp:35)
==23391== by 0x401009: main (main.cpp:36)
==23391== Address 0x4c25218 is 0 bytes after a block of size 200 alloc'd
==23391== at 0x4A07152: operator new[](unsigned long) (vg_replace_malloc.c:363)
==23391== by 0x401C7F: IntVector::IntVector(int, int) (IntVector.cpp:32)
==23391== by 0x401009: main (main.cpp:36)
IntVector::IntVector(int size, int value){
capacity = INITIAL_CAPACITY;
while(size >= capacity)
{
capacity = capacity*2;
}
if(size < 0)
{
count = 0;
array = new int[capacity];
}
else
{
count = size;
array = new int[capacity]; // line 32
for(int i = 0; i < count; i++)
{
array[i] = value; //line 36
}
}
왜 내가 배열을 읽거나 쓸 수 있습니까? 메인에서 나는 v1(5,0)
과 initial capacity = 50
을 선언하고 루프는 단지 4로 이동하므로 50을 지나서 읽거나 쓰는 것이 불가능합니다!
'i'를 루프에 인쇄 해보십시오. – Barmar
게시 한 정보의 코드와 스 니펫에서 [이 테스트 케이스] (http://ideone.com/vYpa8B)를 Valgrind에서 오류없이 실행할 수 없습니다 (또한 '50 '를 당신의 편집 당'capacity '와 함께). 아마도 완벽한 테스트 케이스를 게시 할 수 있으므로 입력 내용이 실제로 생각한대로 표시 될 수 있습니다. –
테스트 케이스는 어디에 있습니까? –