그래서 병합 정렬 구현이 끝났지 만, 버려지는 재귀 호출에서 반환 된 메모리를 삭제하지 않았으므로 array1과 array2에 delete 문을 추가 한 다음 갑자기 병합 정렬을 사용하지 않았습니다. 't work ..... 내 기능의 끝 부분에 delete 문을 추가하는 것이 모든 것을 망쳐 놓는 이유는 무엇입니까? 메모리를 비워야합니까? 코드는 아래와
몇 가지 벡터가 들어있는 클래스가 있는데 어떤 방법이 가장 좋을지 모르겠지만 소멸자를 호출하면 메모리에서 삭제해야합니다. HEADER : class Test
{
public:
Test();
~Test();
void AddString(char* text);
void AddString(string text);
pri
성능이 뛰어난 런타임 메모리 메트릭을 원하므로 오버로드를 기반으로 메모리 트래커를 작성했습니다 new & delete. 기본적으로 힙에서 할당을 수행하고 조각화, 크기, 시간, 숫자, 콜 스택 (callstack) 등과 같은 모든 것을 분석합니다. 그러나 치명적인 결함이 두 개 있습니다. 다른 DLL에 할당 된 메모리를 추적 할 수 없으며 개체 소유권 DL
내 응용 프로그램에 전역 스택을 만들고이 스택에 특정 객체를 배치하려고합니다. 이러한 개체는 고정 된 크기가 아닙니다. 현재 가지고 있습니다. static char contextStack[CONTEXT_MAX_SIZE];
static char *top = &contextStack[0];
나는 문제는 내가 스택을 그만 팝업 할 수있는 delete 연산자
기존 코드베이스에 대해 Valgrind를 실행하면 "일치하지 않는 자유/삭제/삭제 []"오류가 많이 발생합니다. 그들 중 다수는 하나의 문제를 반복하고있다 : 그것은 라인 XXX에서 delete 오퍼레이션이 사용되는 반면, 라인 YYY에서는 malloc 오퍼레이션이 사용된다고 주장한다. 그러나 내가 불평하고 표시된 줄 번호로 이동하는 파일을 열면 메모리가
EDIT : 답변 해 주셔서 감사합니다. 나는 void이어야하는 동안 std::string 반환 유형을 사용하여 tellSomething 메서드를 선언했습니다! 나는 가책을 느끼고 가난한 죄책감을 비난했다 delete 연산자 :! ( // Create the vector of pointers
std::vector<A *>* v = new std::vect
나는 T 타입의 "stuff"를 저장하는 템플릿 클래스 인 myFoo를 가지고 있는데, 원시 타입이거나 복잡한 타입을 가리키는 포인터 일 수 있습니다. myFoo가 삭제되면 저장되는 모든 것과 관련된 모든 메모리를 해제하려고합니다. 즉, 저장되는 모든 포인터에 대해 delete를 호출해야하지만 결국에는 프리미티브에서 delete를 호출 할 수도 있습니다.
C/C++에서는 함수가 끝나기 전에 new/malloc 메모리가 delete/free이되어야한다고하는 상식 인 것 같습니다. 맞습니까? 그러나이 consumer이 후자의 이러한 버퍼를 소비 할 또 다른 기능, void reader(ifstream &ifs)
{
char *buf = new char[100];
ifs.read(buf, 10
Solaris에서 실행되는 코드에서 purify를 실행했으며 많은 메모리 누수가 발생합니다. 그러나 코드를 확인한 결과 대부분의 누수가 유효하지 않은 것 같습니다. 예를 들어 , File1.cpp Obj* getMyObj()
{
Obj* obj = NULL;
if(condition)
{
obj = new Obj();