사과는 질문이 어리석게 들린다면, 나는 전문가를 따라 다니고 있으며, 몇 가지 예를 직접 시도하고 있는데, 이것도 그 중 하나입니다. 나는 검색 옵션을 시도했지만 이런 종류의 대답을 찾지 못했습니다. class A
{
public:
A(){cout<<"A Contruction"<<endl;}
~A(){cout<<"A dest
몇 시간 전에 메모리 누수 문제가 발생하여 가상 소멸자에 대한 기본적인 내용이 잘못 나왔습니다. 수업 설계에 대해 설명하겠습니다. class Base
{
virtual push_elements()
{}
};
class Derived:public Base
{
vector<int> x;
public:
void push_e
클래스의 std :: vector를 사용하는 경우 소멸자를 사용하는 방법에 대해 혼란 스럽습니다. 그래서 나는 다음과 같이 간단한 클래스를 만드는 경우 : 그럼 내 주요 기능에 나는 다음을 수행 class Test
{
private:
int *big;
public:
Test()
{
big = new int[10000];
}
클래스에 동적으로 할당 된 메모리 영역에 대한 정적 포인터가 있어야합니다. 나는 그것을 초기화하는 방법을 이해한다 - 나의 경우에는 첫 번째 객체가 그것을 필요로 할 때 그것을 초기화 할 것이다. 그러나 언제 어디에서 코드를 해제해야할지 모르겠습니다. 프로그램이 종료되면 무료로하고 싶습니다. 내 개체의 소멸자에서 포인터를 해제 할 수 있지만 그 개체가 마지
내가 nm 출력이 기능 수 (전역 정적 개체) C++ 파일로 컴파일 한 것입니다 : 그것은 무엇 00000000 t _Z41__static_initialization_and_destruction_0ii
__static_initialization_and_destruction_0(int, int) /* after c++filt */
입니다? 내가이 함수
앱이 충돌하면 소멸자가 호출됩니까? 처리되지 않은 예외라면 추측 할 수 있지만 더 심각한 오류는 무엇입니까? 아니면 사용자가 응용 프로그램 프로세스를 종료하는 것과 같은 문제는 무엇입니까? 그리고 몇 가지 더 잠재적으로 바보 같은 질문 : 응용 프로그램을 종료하고 모든 파이널 라이저가 실행 된 응용 프로그램의 모든 개체에 무슨 일 - 객체가 쓰레기 수집 얻
삭제 및 소멸자에 문제가 있습니다. (나는 바보 같은 실수를 저 지르지 만, 아직 파악하지 못했습니다.) 소멸자를 단계별로 실행하고 포인터에 대한 삭제를 호출하면 "주소의 메모리에 액세스 할 수 없습니다."라는 메시지가 나타납니다 (일부 주소는입니다). 관련 코드는 다음과 같습니다 /*
* Removes the front item of the linked
두 클래스 인 Car 및 Person이 있습니다. Car에는 멤버 중 하나 인 Person이라는 인스턴스가 있습니다. 나는 그 위치를 추적하면서 차를 움직이고 차 안에서 운전자를 움직여 그 위치를 얻고 싶다. 그러나 이것이 클래스 내부에서 작동하는 동안 (계산 된대로 값을 출력했습니다), 메인에서 데이터에 액세스하려고하면 아무 것도 없습니다. 나는. 배열