생성자의 힙에 선언 된 private
멤버가있는 클래스가 있습니다. 그런 다음 소멸자에서는 delete
이됩니다. 이제 변수를 수정하는 메소드를 추가하고 싶습니다. 참조를 사용할 수 있기를 원하지만 관련 메모리의 특성에 대해 잘 모르겠습니다. 올바르게 수행하고 있음을 알고 싶습니다 (프로젝트가 메모리 부서에서 상당히 클 수 있음).).매개 변수 : 선언 된 위치는 어디입니까?
class A
{
private: std::string str;
/* ... */
public:
A()
{
str = new std::string("");
}
~A(){delete str;}
// method to modify str.
};
참조로 전달한 경우 메모리 누수를 제거하고 메모리 사용을 최소화하기 위해 어떤 단계를 밟아야합니까? 즉, 나는 아직 최적화로 인해 그 모든 사람이되고 싶지는 않습니다.
힙에있는 멤버에 대한 getter 및 setter는 어떻게 작성해야합니까? 생성자 복사, 다른 건가요? 첫째
std :: string 클래스는 이미 복사 생성자, 이동 생성자 및 할당 연산자를 캡슐화하는 자체 메모리 관리를 수행합니다. 이미이 클래스를 집계 할 때 다시 할 필요는 없습니다. –
그러므로 집계 된 클래스 (private 멤버)가 자체 메모리 관리 (std :: string처럼)를 가지면 힙에 할당하지 마십시오.힙을 사용하는 이유가 될 수있는 헤더 파일에 많은 의존성이 있다고 염려한다면 pimpl_ idiom을 사용하십시오. –
절대적으로 필요할 때까지 포인터와 힙 할당을 사용하지 마십시오. – Raja