삭제 후 NULL 포인터에 대한 자동 설정이 표준에 포함되지 않은 이유는 언제나 궁금합니다. 이것이 처리되면 잘못된 포인터로 인한 많은 충돌이 발생하지 않습니다. 그러나 표준이 제한된 왜 나는 이유 중 몇 가지를 생각할 수 있다고 한 : 성능 : 추가 명령이 delete 성능이 저하 될 수 있습니다. const 포인터 때문일 수 있습니까? 그런데이 표준은
C++에서 객체 배열을 처리하는 것에 대해 약간 혼란 스럽습니다. 객체가 전달되는 방식 (참조 또는 값)과 해당 객체를 전달하는 방법에 대한 정보를 찾을 수없는 것처럼 보입니다. 배열에 저장됩니다. 개체 배열을 해당 개체 형식에 대한 포인터 배열로 기대할 수 있지만이 위치는 어디에도 쓰이지 않습니다. 그것들은 포인터가 될 것인가, 객체 자체가 배열의 메모리
의 배열이 나는 할당 객체 나는이 배열을 삭제하는 방법을 Objects *array = new Objects[N];
의 배열했다? 그냥 delete[] array;
또는 배열 요소를 반복하는 중입니까? for(int i=0;i<N;i++)
delete array[i];
delete[];
감사 는 UPDATE : 나는 컴파일 코드를 강제
내 프로그램에서 약간의 메모리 누수 찾기를하고 있지만 내 방식으로 새로 작성 및 삭제 (새 항목 [] 및 삭제 []) 은 아무 것도하지 않는 것 같습니다. void* operator new (unsigned int size, const char* filename, int line)
{
void* ptr = new void[size];
m
const 포인터에 관한 기본적인 질문이 있습니다. const 포인터를 사용하여 non-const 멤버 함수를 호출 할 수 없습니다. 그러나, 나는이 가리키는 const 포인터에이 작업을 수행 할 수 있습니까 : delete p;
이은 본질에 const가 아닌 '방법'인 클래스의 소멸자를 호출합니다. 왜 이것이 허용됩니까? 다음을 지원하는 것일뿐입니다.
new[]에 의해 할당 된 char*에 문자열을 읽기 위해 HDF5를 사용하고 있습니다. 다음 문자열을 사용하여 :: assign() 호출이 데이터를 실제로 원하는 위치로 복사 할 수 있습니다. 그런 다음 해당 char *에 delete[]을 호출합니다. 이것은 totalview를 사용하여 메모리 누수의 소스로 표시됩니다. stdlibC++에서 변경된 호출
나는 C++에 관해서는 상대적으로 초보자이다. 내가 대학에서 커리큘럼을 많이 사용하는 것은 당연한 일이다. 메모리 관리는 번거롭지 만 ansi C 및 C++에서 번호 책을 구입했습니다. 관련 질문을 훑어 보았지만이 특정 기준과 일치하는 것을 찾지 못했습니다. 아무도 그것을 언급하지 않을 수 있습니다. 이 질문은 저를 괴롭 혔지만 개념적으로 유용하지 않은 것
배열에 section 11.14 of the C++-FAQ-lite을 적용하는 방법을 알고 싶습니다. class Pool {
public:
void* allocate(size_t size) {...}
void deallocate(void* p, size_t size) {...}
};
void* operator new[](size_t
, 이유 중 하나는 의 피연산자는 좌변 할 필요는 삭제하는 것이라고 쓰여. 고려 : 여기 delete p+1;
delete f(x);
, 삭제의 구현 제로를 할당 할 수있는 포인터를 가 없습니다. 포인터에 숫자를 추가하면 많은 수의 sizeof(*p) 단위만큼 메모리에서 앞으로 이동합니다. delete p과 delete p+1의 차이점은 무엇이며 0