2013-07-23 3 views
1

저는 QVector에 100,000 개의 QString 요소 (각 QString에는 약 10 개의 문자가 있음)를 추가하려고했습니다. 그 후 프로그램이 실패합니다. QVector에 포함될 수있는 요소의 수에 제한이 있습니까 (물리적 메모리 제한 외에도)? 게다가, 나는 많은 문자열을 저장할 정도로 많은 여유 메모리를 가지고 있다고 생각합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?QVector의 최대 크기는 있습니까?

+1

요소의 수는 int의 한도 (약 20 억)로 제한됩니다. 문제는 당신이 넣고있는 것의 크기가 될 것입니다. 또는 당신이 넣고있는 것을 복사하는 어떤 이슈. – paulm

+1

실패한 코드의 최소한의 예를 보여줄 수 있습니까? 그런데 QVector보다 일반적으로 [QList가 권장됩니다] (http://qt-project.org/doc/qt-5.0/qtcore/containers.html#the-container-classes). –

+0

코드를 표시하고 추측을 피하십시오. Btw가 관찰 한 오류의 유형을 자세히 설명합니다. – UmNyobe

답변

1

QStringList를 제안으로 사용해보십시오. 나는 100k 문자열이 메모리 문제가 될지 의심 스럽다.

QStringList tlist; 
for(int i=0;i<100000;i++) 
    tlist.append("1234567890"); 

실행 내 환경 문서에서

2

내에서 완전히 잘.

QVector 클래스는 동적 배열 ... 그것은 인접한 메모리 위치에서 그 항목을 저장하고 신속 인덱스 기반 액세스를 제공 을 제공하는 템플릿 클래스이다. 이 많은 수의 요소를 추가하는 가장 좋은 방법을 알고

QVector<QString> vector(100000);//or 
vector.reserve(100000); 

이 메모리를 여러 번 재배치 방지하여 메모리 하나에 예약하는 것입니다.

관련 문제