이것은 매우 쉬운 해결책이 있어야하는 것처럼 보입니다. 그러나 나는 그것을 알아낼 수 없습니다. 난 단순히 크기가 조정 된 배열을 만들고 모든 원래 값을 복사하려고 시도하고, 마지막으로 메모리를 확보하기 위해 이전 배열을 삭제하려고합니다. 여기에서 일어나고있는 것 같다 무엇하나의 동적으로 할당 된 배열에서 다른 C++로 복사
void ResizeArray(int *orig, int size) {
int *resized = new int[size * 2];
for (int i = 0; i < size; i ++)
resized[i] = orig[i];
delete [] orig;
orig = resized;
}
내가 delete [] orig
을 주석 처리하지 않는 한이 반환 정크 값의 무리를 끌어다 후 resized[i] = orig[i]
인쇄 오리지널로, 오히려 값보다 참조로 값을 복사하는 것입니다. 원본에서 크기를 변경하거나 다른 문제가 있습니까? 나는 std :: vector를 사용하고 싶지 않다.
"참조로 값 복사"와 같은 것은 존재하지 않습니다. 동일한 데이터에 대한 새로운 참조를 만들거나 복사 중입니다. –
'std :: vector'를 사용하지 않으려는 경우에도 클라이언트가 불변 객체를 전달할 수 있고 구현 포인터가 변경된다는 사실을 관리 할 필요가 없도록 클래스에서 이것을 래핑함으로써 많은 이득을 얻을 수 있습니다 모든 크기 조정. : -/ – HostileFork