이 경우 가장 흥미로운 것은 어제 일은 괜찮습니다. 내가bad_alloc :: 스칼라 삭제 소멸자 (unsigned int) 벡터가 470MB 크기로 만들려고 할 때
size = 480 000 000;
std::vector<char> result(size);
이 경우 가장 흥미로운 것은 어제 일은 괜찮습니다. 내가bad_alloc :: 스칼라 삭제 소멸자 (unsigned int) 벡터가 470MB 크기로 만들려고 할 때
size = 480 000 000;
std::vector<char> result(size);
이 경우 가장 흥미로운 점은 어제 작업이 정상입니다.
std::vector
의 내용물은 공기 중에 저장되지 않습니다. 컴퓨터의 메모리를 차지합니다. 분명히 컴퓨터의 메모리 상황이 항상 바뀝니다. 어제부터 사용 가능한 총 여유 공간이 줄어들거나 더 많은 분열이 발생하여 총 여유 공간이 470MB를 훨씬 초과하는 경우에도 연속 470MB 지점이없는 경우도 있습니다.
아마도 std::deque
단기간 우아 정도 문제 해결 수
std::vector
반대로
하기, 양단의 요소가 연속적 저장되지 않는다 : 전형적인 구현 개별적 시퀀스를 사용하는 고정으로 할당 - 크기 배열, [...]
동일한 문서에 설명되어 있듯이 몇 가지 단점이 있습니다.
벡터가 필요한 크기의 연속 메모리 블록을 할당하려고 문제의 원인을 모른다. 시스템 메모리 조각화에 따라 사용 가능한 0.5Gb 블록이 없을 수 있으며 메모리 할당이 실패합니다.
몇 가지 응용 프로그램을 닫고 다시 시도하십시오;) – CinCout