과부하 동적 배열 및 운영자는 내 소스를 minimalize : 내 문제를 설명하기 위해 원인 메모리 충돌
#include <iostream>
class vec{
public:
float* X;
int DIM;
vec(int dimension)
{
DIM = dimension;
X = new float[dimension];
for (int i=0;i<DIM;i++)
X[i] = (float) rand()/RAND_MAX;
}
~vec(void){
delete [] X;
}
vec operator-(vec const& rhs)
{
vec ans(DIM);
for (int i=0;i<DIM;i++)
ans.X[i] = X[i] - rhs.X[i];
return ans;
}
};
int main(){
vec A(5),B(5),C(5);
C= A-B;
return 0;
}
내가 힙이 파괴 된 것으로 오류가이 프로그램을 실행
. 나는 소멸자가 내 문제라고 확신한다.C= A-B;
이있는 행에서 변수
ans
은 생성자에 의해 삭제되고 반환 될 수 없습니다. 그게 맞습니까?
delete [] X;
줄을 지우면 모든 것이 정상입니다. 그러나 그것은 기억을 해방시키지 못할 것이다.
나는이 문제에 대해 가장 유명한 검색 엔진 중 하나를 참고했지만 어떤 대답도 찾지 못했습니다. 어떻게 해결할 수 있습니까?
'ans'이 파괴되는 것은 문제가되지 않습니다. 임시로 'ans'사본이 만들어지고 반환되는 것입니다 (원칙적으로). –