2011-02-15 4 views
0

(수 백 개일 수 있음) 집합을 동적으로 할당하려고합니다. 이러한 객체의 일부는 텍스트 필드입니다. std :: string 좋은 문자열 조작을 제공하기 때문에 형식 std : 문자열의 개체 멤버 매개 변수를 갖는 것이 좋습니다.동적으로 할당 된 개체의 구성원 매개 변수로 STD :: string

그러나 std :: string은 동적으로 크기를 조정할 수있는 객체입니다. 나에게 이것은 std :: string을 포함하는 동적으로 할당 된 객체에 대한 것이다. std :: string이 계획보다 커지면 메모리 오버 플로우가 할당 될 수있다.

  • 동적으로 할당 된 객체의 매개 변수로 std :: string이 적합한 지 여부를 조언 해줄 수 있습니까?
  • 메모리 오버플로가 발생하지 않도록 std :: string을 조작하는 방법은 무엇입니까?
  • 수백 개의 개체를 동적으로 할당하더라도 std :: string은 구성원 매개 변수로 적합합니까?

답변

1

귀하의 질문에 약간의 해석이 어려우므로 샘플 코드를 사용하면 더 쉽게 이해할 수 있습니다. 문자열을 포함하는 클래스가 있다고 가정하면 다음과 같이됩니다.

class foo { 
    public: 
    std::string str; 
}; 

문자열이 어떻게 크기가 조정됩니까? 시도해 보도록하겠습니다 : foo 클래스의 객체 크기가 고정되어 있습니다. 문자열 멤버의 크기도 고정되어 있지만 구현 내용에 문자열의 내용에 따라 확장되거나 축소되는 추가 동적 메모리 (다른 곳)에 대한 포인터가 포함됩니다. std :: string의 구현은 이것을 처리합니다. 걱정할 필요가 없습니다. 메모리 오버플로가 발생하지 않습니다. 문자열의 메모리는 foo 객체가 사용하는 블록과 다른 메모리 블록입니다 (예 :).

+0

의견을 보내 주셔서 감사합니다. 너는 내 질문을 잘 이해하고 대답했다. 나는 std :: string의 크기를 걱정할 필요가 없다는 것을 이해한다. 나는이 대답을 * Accptable Answer *로 표시하고 +1도 덧붙이고 있습니다. –

관련 문제