new 7

[C#] abstract & virtual 연산자와 override & new 연산자

virtual method(가상 함수) 1. abstract(추상) vs virtual(가상) - abstract(추상) : 선언하는 클래스도 반드시 abstract 클래스. 이 키워드로 정의한 속성이나 메서드는 본문을 정의할 수 없으며 접근 한정자는 public, internal, protected로 선언. public abstract class TestAbstractClass { public abstract int TestAbstractFunc(); } - virtual(가상) : 정적 클래스를 제외한 모든 클래스에서 사용 가능. 이 키워드로 정의한 속성이나 메서드는 본문을 정의할 수 있으며 abstract와 마찬가지로 접근 한정자는 public, internal, protected로 선언해야 한다...

개발/C# 2021.01.25

[C++]new, delete 연산자 오버로딩

new 연산자 오버로딩Point * ptr = new Point(3, 4);기본적으로 제공되는 new 연산자가 하는 일 1) 메모리 공간의 할당 2) 생성자의 호출 3) 할당하고자 하는 자료형에 맞게 반환된 주소 값의 형 변환* 이중 3)번의 일을 수행함으로써 C에서 사용하던 malloc과 달리 new 연산자가 반환하는 주소값을 형변환할필요가 없게 된다. 기본적으로 제공되는 new 연산자가 하는 일은 위 3가지이고, 우리가 new 연산자를 오버로딩할 경우엔 위 세가지 작업중 1번에 해당하는 메모리 공간의 할당만 구현하면 된다. *new 연산자 오버로딩은 아래와 같이 오버로딩 하도록 되어있다. - 반드시 void 포인터 형 반환 - 매개변수형은 size_t Point * ptr = new Point(3,4..

개발/C, C++ 2019.01.13

2_new2_예제

예제)메모리 해제가 제대로 되지 않은게 남았는지 자동으로 확인해주는 프로그램Operator new와 Operator delete 재정의 이용,int count = 0; //메모리 할당해준 객체 카운트 세는 변수 //할당한 객체의 파일명, 몇번째 라인인지, 주소, 크기를 저장 struct BLOCK { char file[256]; int line; void* addr; int size; }; BLOCK mem[10000]; // 할당한 메모리 정보를 관리할 배열 //operator new, operator delete 재정의 void* operator new( size_t sz, char* file, int line) { void* p = malloc(sz); strcpy(mem[count].file, f..

개발/C, C++ 2014.07.21

2_new1_new,operator new, operator delete

1. new의 정확한 동작방식1. operator new()라는 함수를 사용해서 메모리 할당2. (1)이 성공하고 객체라면 생성자 호출3. C의 메모리 주소를 해당 타입으로 캐스팅해서 리턴. 2. 생성자/소멸자를 호출하지 않고 메모리만 할당하는 방법은?Point* p = static_cast(operator new(sizeof(Point))); operator delete(p);위의 방법을 이용하면 생성자는 호출되지 않고 메모리만 할당되는 것을 알 수 있다. 3. operator new()를 재정의 해서 메모리 할당을 변경 가능하다(new 자체를 재정의 하는게 아니다) #include using namespace std; void* operator new( size_t sz) { cout

개발/C, C++ 2014.07.20
반응형