C++에서 new 연산자를 사용할 때 일어나는 메모리 할당 문제를 해결하는 두 가지 방법을 제공합니다. 메모리 할당 문제가 발생할경우 널 포인터를 리턴 new가 bad_alloc 예외를 발생시킴 bad_alloc 예외 방식 #include #include struct Temp { double a[90000]; long b[90000]; }; int main(void) { Temp * temp; try { temp = new Temp(); } catch (std::bad_alloc & ba) { std::cout
프로그래밍/C 검색 결과
중간에 글을 정리하는 방법도 여러 번 바꿨는데, 그냥 지금이 제일 무난한 듯 싶습니다. 하다가 안하다가 해서 긴 시간이 걸렸지만 C++에서는 꾸준히 올리도록 하겠습니다. register 키워드 같은 건 안썼지만 레퍼런스 참고하셔도 충분합니다. C99부터 많이 생겨났지만 어차피 전 C++을 쓰기에 안올릴겁니다. https://en.cppreference.com/w/c/keyword C keywords - cppreference.com This is a list of reserved keywords in C. Since they are used by the language, these keywords are not available for re-definition. The most common keyword..
공용체(Union Type) 구조체는 struct라는 키워드를 사용해서 정의하는 반면, 공용체는 union이라는 키워드를 사용해서 정의합니다. 유니온이라고 읽습니다. 공용체는 일반적으로 잘 쓰이지 않습니다. 정의와 선언 union uPoint { int xpos; int ypos; }; 정의에서 구조체와 차이점이라면 키워드 struct 대신에 union을 사용합니다. 그 외에는 동일합니다. 변수 선언할때는 struct대신에 union 키워드를 쓰면 됩니다. 구조체와 차이점 각각의 변수가 메모리 공간에 할당되는 방식과 접근의 결과에는 많은 차이가 있습니다. struct sPoint { int xpos; int ypos; }; union uPoint { int xpos; int ypos; }; 위의 구조체와..
조건부 컴파일 매크로 조건부 컴파일 매크로는 특정 조건에 따라 소스코드의 일부를 삽입하거나 삭제할 수 있도록 디자인된 지시자입니다 총 다섯 가지가 있습니다. #if... #endif : 참이라면 #ifdef... #endif : 정의되었다면 #ifndef... #endif : 정의되지 않았다면 #else의 삽입 (#if,#ifdef,#ifndef에 해당) : #if(또는#ifdef,#ifndef)에서 아니라면 #elif의 삽입 (#if에만 해당) : else if와 같은것.(앞 조건문이 참이 아니라면) 4,5번은 1,2,3번의 중간에 들어간다는 공통점이 있고 1,2,3번은 끝이 #endif라는 점입니다. #if... #endif #include #define one 1 #define zero 0 int ..
선행처리기 선행처리란 컴파일 이전의 처리를 의미합니다. 선행처리기는 삽입해 놓은 선행처리 명령문대로 소스코드의 일부를 수정할 뿐인데, 여기서 말하는 수정이란 단순 치환의 형태가 대부분입니다. 전처리기라고 부르기도 합니다. #define, enum이 이에 해당합니다. 컴파일의 순서는 소스파일 >선행처리기 > 선행처리 거친 소스파일 > 컴파일러 > 오브젝트 파일 > 링커 > 실행파일(exe) 순입니다. 자주 사용해왔던 #include 선언도 #문자로 시작하는 선행처리 명령문입니다. 의미는 "stdio.h 파일의 내용을 이곳에 가져다 놓으세요" 선행처리 명령문,#define 형식이 두 가지가 있습니다. #define Object-like macro 형식 #define one 1 위 코드의 의미는 "one을 1..
C언어 메모리 구조 메모리 구조는 4개의 영역으로 나뉘어 있습니다. 메모리 공간을 나눠서 유사한 성향의 데이터를 묶어서 저장을하면 관리가 용이해지고 메모리의 접근 속도가 향상됩니다. 각 영역 코드 영역(Code Area) 코드 영역은 이름 그대로 실행할 프로그램의 코드가 저장되는 메모리 공간입니다. 따라서 CPU는 코드영역에 저장된 명령문들을 하나씩 가져가서 실행을 합니다. 데이터 영역(Data Area) 데이터 영역에는 전역변수와 static으로 선언되는 static변수가 할당됩니다. 즉, 이 영역에 할당되는 변수들은 프로그램의 시작과 동시에 메모리 공간에 할당되어 프로그램 종료 시까지 남아있게 된다는 특징이 있습니다. 스택 영역(Stack Area) 스택 영역에는 지역변수와 매개변수가 할당됩니다. 이..
최근댓글