«delete-operator» 태그된 질문

C ++ 프로그래밍 언어에서 delete 연산자는 지정된 인수의 소멸자를 호출하고 new에 의해 할당 된 메모리를 힙에 다시 반환합니다.

26
JavaScript에서 배열 요소 삭제-삭제 대 스플 라이스
메소드 를 사용 하는 것과 반대로 배열 요소 에서 delete연산자 를 사용 하는 것의 차이점은 무엇입니까 ?Array.splice 예를 들면 다음과 같습니다. myArray = ['a', 'b', 'c', 'd']; delete myArray[1]; // or myArray.splice (1, 1); 객체로 할 수있는 것처럼 배열 요소를 삭제할 수 있는데 왜 접속 방법을 사용합니까?



10
삭제가 허용됩니까?
delete this;delete-statement가 클래스의 해당 인스턴스에서 실행될 마지막 명령문 인 경우 허용 됩니까? 물론 - this포인터가 나타내는 객체 가 new생성 된 것이 확실합니다 . 나는 이것에 대해 생각하고있다 : void SomeModule::doStuff() { // in the controller, "this" object of SomeModule is the "current module" // now, if I want to switch …

11
서브 클래스에 대한 포인터에서 delete가 기본 클래스 소멸자를 호출합니까?
나는이 class A해당 필드 중 하나에 대한 힙 메모리 할당을 사용하는합니다. 클래스 A는 인스턴스화되어 다른 클래스 ( class B. 클래스 B의 객체로 작업을 마치면 delete소멸자를 호출한다고 가정합니다. 그러나 이것이 클래스 A의 소멸자를 호출합니까? 편집하다: 답변에서 나는 그것을 취합니다 (잘못된 경우 편집하십시오). delete B의 인스턴스 중 B :: ~ B (); …

16
delete []는 그것이 배열임을 어떻게 알 수 있습니까?
자, 우리는 전달 된 내용에 따라 다음 코드에서 발생하는 일이 정의되지 않은 것에 동의합니다. void deleteForMe(int* pointer) { delete[] pointer; } 포인터는 모든 종류의 다른 일이 될 수 있으므로 무조건 수행하는 delete[]것은 정의되어 있지 않습니다. 그러나 실제로 배열 포인터를 전달한다고 가정 해 봅시다. int main() { int* arr = new …


6
Visual Studio는 삭제 된 포인터로 무엇을하며 그 이유는 무엇입니까?
필자가 읽은 C ++ 책은 포인터를 delete연산자를 사용하여 삭제하면 가리키는 위치의 메모리가 "해제"되어 덮어 쓸 수 있다고 말합니다. 또한 포인터가 재 할당되거나로 설정 될 때까지 동일한 위치를 계속 가리킬 것임을 나타냅니다.NULL . 그러나 Visual Studio 2012에서는; 이것은 사실이 아닌 것 같습니다! 예: #include <iostream> using namespace std; int main() { …

12
삭제로 포인터를 NULL로 설정하지 않는 이유는 무엇입니까?
삭제 후 포인터를 자동으로 NULL로 설정하는 것이 왜 표준의 일부가 아닌지 항상 궁금했습니다 . 이것이 처리되면 유효하지 않은 포인터로 인한 많은 충돌이 발생하지 않습니다. 그러나 표준이 이것을 제한 한 몇 가지 이유를 생각할 수 있다고 말했습니다. 공연: 추가 명령을 delete수행 하면 성능 이 저하 될 수 있습니다. const포인터 때문일 수 …

6
C ++에서 포인터 삭제
컨텍스트 : 저는 포인터 주위에 머리를 감 으려고 노력하고 있습니다. 우리는 몇 주 전에 학교에서 그들을 보았고 오늘 연습하는 동안 나는 어리석은 일을 만났습니다. 문제, 그것은 당신에게 매우 간단 할 수 있지만 프로그래밍 경험이 거의 없습니다. 나는 포인터 삭제에 관한 몇 가지 질문을 보았지만 모두 '간단한'포인터가 아닌 클래스 삭제와 관련이있는 …

5
const에 대한 포인터 삭제 (T const *)
const 포인터에 관한 기본적인 질문이 있습니다. const 포인터를 사용하여 상수가 아닌 멤버 함수를 호출 할 수 없습니다. 그러나 나는 const 포인터에서 이것을 할 수 있습니다. delete p; 이것은 본질적으로 상수가 아닌 '메소드'인 클래스의 소멸자를 호출합니다. 왜 이것이 허용됩니까? 이것을 지원하는 것입니까? delete this; 아니면 다른 이유가 있습니까?

5
C ++에서 어떻게 'realloc'을 사용합니까?
reallocC ++에서 어떻게 할 수 있습니까? 언어에서 누락 된 것 같습니다.new 와 delete있지만 resize! 내 프로그램이 더 많은 데이터를 읽을 때 버퍼를 재 할당해야하기 때문에 필요합니다. 나는 delete이전 포인터 new를 사용하고 새롭고 더 큰 포인터를 사용 하는 것이 올바른 옵션 이라고 생각하지 않습니다 .

2
C ++ 0x에서 nullptr을 삭제하는 것이 여전히 안전합니까?
에서 c++03이 널 포인터를 삭제하면 아무 효과가 없습니다 꽤 분명하다. 실제로 다음과 같이 명시 적으로 명시되어 있습니다 §5.3.5/2. 어느 쪽이든 delete 피연산자의 값이 널 포인터이면 연산이 영향을 미치지 않습니다. 그러나, 현재의 초안 에 대한 c++0x이 문장 누락 된 것으로 보인다. 나머지 초안에서는 delete-expression 의 피연산자가 널 포인터 상수가 아닌 경우 …


3
운영자 삭제에서 소멸자가 호출되지 않는 이유는 무엇입니까?
나는 그것 ::delete의 수업 을 요청 operator delete했습니다. 그러나 소멸자는 호출되지 않습니다. 과부하 된 클래스 MyClass를 정의했습니다 operator delete. 글로벌 operator delete도 과부하 상태입니다. 오버로드 operator delete의이 MyClassv로드 세계를 호출합니다 operator delete. class MyClass { public: MyClass() { printf("Constructing MyClass...\n"); } virtual ~MyClass() { printf("Destroying MyClass...\n"); } void* operator new(size_t …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.