메모리 할당 방법과 메모리 작업 방법을 이해하지 못하기 때문에 혼란스럽습니다. 일반적으로 CArrayObj나 그 안에 있는 개체는 수동으로 삭제할 필요가 없습니다 .
// Где-то в коде есть объект CArrayObj
CArrayObj ArrayOfItems;
...
//Где-то в коде заполнили коллекцию пользовательскими объектамиvoid Create()
{
ArrayOfItems.Add( new CUserItem());
ArrayOfItems.Add( new CUserItem());
//...
ArrayOfItems.Add( new CUserItem());
}
// Так не правильно делать. Удалять ничего не надо.voidOnDeinit ( constint reason)
{
delete ArrayOfItems;
}
나는 여전히 내 리뷰에 대한 책임이 있고 나는 당신에게 좋은 리뷰를 주었습니다. 좋은, 당신의 게임을 끝내십시오 "나는 하루에 1개의 질문에 대답합니다", 왜냐하면 나는 기대에 만족하지 않고 그다지 좋지 않기 때문입니다 내 리뷰를 수정하는 데 능숙합니다. 이 속도로는 다음 주 내내 기다려야 하고 부엉이를 프리랜서에게 수정을 맡겨야 합니다. )
글쎄, 내가 객체의 배열을 만들었다면. 즉, ArrayObj 배열 개체가 필요한 작업을 수행했습니다. 그러면 이 개체는 필요하지 않지만 내부 개체(배열 구성원)는 필요합니다. 이 배열 개체를 삭제해야 합니까?
CArrayObj의 목적을 이해하지 못합니다. 이것은 당신이 그 안에 배치한 개체의 소유자입니다. CArrayObj를 삭제하면 그 안에 배치한 객체도 삭제됩니다. ArrayObj는 이러한 개체의 소유자이기 때문에 개체의 관리자이기도 합니다. 개체 참조를 제어하고 컬렉션이 더 이상 필요하지 않은 경우 할당된 모든 메모리를 자동으로 삭제합니다. 따라서 아무것도 해제하고 삭제 연산자 를 사용할 필요가 없습니다. 모든 것은 CArrayObj 자체에 의해 수행됩니다. CArrayObj 자체는 실제로 컴퓨터의 메모리(수십 바이트)를 차지하지 않으므로 삭제하려고 하는 것은 무의미합니다.
CArrayObj의 목적을 이해하지 못합니다. 이것은 당신이 거기에 배치한 개체의 소유자입니다. CArrayObj를 삭제하면 그 안에 배치한 객체도 삭제됩니다. ArrayObj는 이러한 개체의 소유자이기 때문에 개체의 관리자이기도 합니다. 개체 참조를 제어하고 컬렉션이 더 이상 필요하지 않은 경우 할당된 모든 메모리를 자동으로 삭제합니다. 따라서 아무것도 해제하고 삭제 연산자 를 사용할 필요가 없습니다. 모든 것은 CArrayObj 자체에 의해 수행됩니다. CArrayObj 자체는 실제로 컴퓨터의 메모리(수십 바이트)를 차지하지 않으므로 삭제하려고 하는 것은 무의미합니다.
그래서 그들은 CArrayObj를 망쳤습니다. 대신: CArrayObj test_objects; 그들은 다음과 같이 썼습니다. CArrayObj* test_objects , 그러나 소멸자를 만드는 것을 잊었습니다 . 아마도 메모리 모델이 CArrayObj와 함께 작동하도록 잘못 구성되었을 수 있습니다. 아마도 그들은 포인터로 그것을 과장했을 것입니다. 진단은 분명합니다. 포인터가 필요하지 않은 곳에 포인터를 사용 하면 종종 누출이 발생합니다.
그래서 그들은 CArrayObj를 망쳤습니다. 대신: CArrayObj test_objects; 그들은 다음과 같이 썼습니다. CArrayObj* test_objects , 그러나 소멸자를 만드는 것을 잊었습니다 . 아마도 메모리 모델이 CArrayObj와 함께 작동하도록 잘못 구성되었을 수 있습니다. 아마도 그들은 포인터로 그것을 과장했을 것입니다. 진단은 분명합니다. 포인터가 필요하지 않은 곳에 포인터를 사용 하면 종종 누출이 발생합니다.
여기에서 다른 개체를 추가하여 CArrayObj 개체를 만들고 있습니다. 나는 여전히 개체 자체가 필요합니다. 이 목록 개체를 삭제할 수 있습니다.
삭제하기 전에 개체를 제거하려면 어떤 방법을 사용해야 합니까? 분리() 또는 삭제() ?
또는 Clear() / Shutdown() ?
메모리 할당 방법과 메모리 작업 방법을 이해하지 못하기 때문에 혼란스럽습니다. 일반적으로 CArrayObj나 그 안에 있는 개체는 수동으로 삭제할 필요가 없습니다 .
나는 객체를 클래스 함수에 전달하고 이에 대한 참조를 전달하여 함수의 작업이 객체와 함께 발생한 다음 반환되도록 합니다. 그리고 더 이상 클래스 개체 자체가 필요하지 않습니다... 어떻게 삭제할 수 있습니까?
다소 이렇습니다. 여기에서 test_class를 삭제하고 있습니다. 다음 반복에서 Invalid 포인터를 얻습니다...
전달된 객체를 삭제하지 않고 test_class를 어떻게 삭제할 수 있습니까?
메모리 할당 방법과 메모리 작업 방법을 이해하지 못하기 때문에 혼란스럽습니다. 일반적으로 CArrayObj나 그 안에 있는 개체는 수동으로 삭제할 필요가 없습니다 .
글쎄, 내가 객체의 배열을 만들었다면. 즉, ArrayObj 배열 개체가 필요한 작업을 수행했습니다. 그러면 이 개체는 필요하지 않지만 내부 개체(배열 구성원)는 필요합니다. 이 배열 개체를 삭제해야 합니까?
이 uv Ihor Herasko는 주말까지 지속되지만 주말에는 사용할 수 없습니다. )
질문은 지난 목요일부터 매달려 있습니다! :)
나는 여전히 내 리뷰에 대한 책임이 있고 나는 당신에게 좋은 리뷰를 주었습니다. 좋은, 당신의 게임을 끝내십시오 "나는 하루에 1개의 질문에 대답합니다", 왜냐하면 나는 기대에 만족하지 않고 그다지 좋지 않기 때문입니다 내 리뷰를 수정하는 데 능숙합니다. 이 속도로는 다음 주 내내 기다려야 하고 부엉이를 프리랜서에게 수정을 맡겨야 합니다. )나는 객체를 클래스 함수에 전달하고 이에 대한 참조를 전달하여 함수의 작업이 객체와 함께 발생한 다음 반환되도록 합니다. 그리고 더 이상 클래스 개체 자체가 필요하지 않습니다... 어떻게 삭제할 수 있습니까?
다소 이렇습니다. 여기에서 test_class를 삭제하고 있습니다. 다음 반복에서 Invalid 포인터를 얻습니다...
전달된 객체를 삭제하지 않고 test_class를 어떻게 삭제할 수 있습니까?
개체에 대한 포인터를 만드는 것을 피해야 합니다. 대신 함수의 스택에서 직접 객체에 대해 작업하십시오.
왜냐하면 test_object는 CTestObject 개체를 포함하도록 보장됩니다(이 개체 외에는 추가하지 않았죠? :) 그런 다음 캐스트 검사를 제거하여 코드를 더욱 단순화할 수 있습니다.
음, 아주 간략하게:
글쎄, 내가 객체의 배열을 만들었다면. 즉, ArrayObj 배열 개체가 필요한 작업을 수행했습니다. 그러면 이 개체는 필요하지 않지만 내부 개체(배열 구성원)는 필요합니다. 이 배열 개체를 삭제해야 합니까?
CArrayObj의 목적을 이해하지 못합니다. 이것은 당신이 그 안에 배치한 개체의 소유자입니다. CArrayObj를 삭제하면 그 안에 배치한 객체도 삭제됩니다. ArrayObj는 이러한 개체의 소유자이기 때문에 개체의 관리자이기도 합니다. 개체 참조를 제어하고 컬렉션이 더 이상 필요하지 않은 경우 할당된 모든 메모리를 자동으로 삭제합니다. 따라서 아무것도 해제하고 삭제 연산자 를 사용할 필요가 없습니다. 모든 것은 CArrayObj 자체에 의해 수행됩니다. CArrayObj 자체는 실제로 컴퓨터의 메모리(수십 바이트)를 차지하지 않으므로 삭제하려고 하는 것은 무의미합니다.
CArrayObj의 목적을 이해하지 못합니다. 이것은 당신이 거기에 배치한 개체의 소유자입니다. CArrayObj를 삭제하면 그 안에 배치한 객체도 삭제됩니다. ArrayObj는 이러한 개체의 소유자이기 때문에 개체의 관리자이기도 합니다. 개체 참조를 제어하고 컬렉션이 더 이상 필요하지 않은 경우 할당된 모든 메모리를 자동으로 삭제합니다. 따라서 아무것도 해제하고 삭제 연산자 를 사용할 필요가 없습니다. 모든 것은 CArrayObj 자체에 의해 수행됩니다. CArrayObj 자체는 실제로 컴퓨터의 메모리(수십 바이트)를 차지하지 않으므로 삭제하려고 하는 것은 무의미합니다.
그러나 오류가 삭제되지 않은 개체 CArrayObj
그러나 오류가 삭제되지 않은 개체 CArrayObj
그래서 그들은 CArrayObj를 망쳤습니다. 대신: CArrayObj test_objects; 그들은 다음과 같이 썼습니다. CArrayObj* test_objects , 그러나 소멸자를 만드는 것을 잊었습니다 . 아마도 메모리 모델이 CArrayObj와 함께 작동하도록 잘못 구성되었을 수 있습니다. 아마도 그들은 포인터로 그것을 과장했을 것입니다. 진단은 분명합니다. 포인터가 필요하지 않은 곳에 포인터를 사용 하면 종종 누출이 발생합니다.
안녕하세요!
이 위치에서 이미 부분 문자열을 추출 하기 위해 텍스트 문서의 7행과 같이 커서를 이동하는 방법을 알려주십시오.
한 줄로 된 많은 텍스트 파일과 여러 줄로 된 하나의 파일 중 어느 것이 더 빠를까요?
그래서 그들은 CArrayObj를 망쳤습니다. 대신: CArrayObj test_objects; 그들은 다음과 같이 썼습니다. CArrayObj* test_objects , 그러나 소멸자를 만드는 것을 잊었습니다 . 아마도 메모리 모델이 CArrayObj와 함께 작동하도록 잘못 구성되었을 수 있습니다. 아마도 그들은 포인터로 그것을 과장했을 것입니다. 진단은 분명합니다. 포인터가 필요하지 않은 곳에 포인터를 사용 하면 종종 누출이 발생합니다.
그들은 어디에 전혀 필요합니까? 객체를 선언할 수 있을 때 사용하는 요점은 무엇입니까?