본문 바로가기

C C++/C언어 기초30

[C/C++] 동적 메모리 할당 (malloc 함수, calloc 함수, realloc 함수) 앞 서 알아 본 메모리 구조에서 사용자가 원하는 시점에 할당하고 소멸시킬 수 있는 메모리는 힙 영역에 할당이 된다고 언급하였습니다. 그렇다면 사용자가 원하시는 시점에 할당과 소멸을 어떻게 할 수 있을까요? 통상 C에서는 malloc, calloc, realloc 함수로 할당하며, C++에서도 사용 가능합니다. 동적 메모리 할당 (malloc 예시) 동적 메모리 할당은 힙에 메모리를 할당하며, 유저가 원하는 시점에 생성과 소멸 시킬 수 있습니다. mlloc 함수와 free함수를 통해 생성과 소멸이 가능합니다. 동적 메모리 할당의 가장 큰 목적은 메모리 공간을 지정한대로 사용할 수 있다는 점입니다. 아래 문제점을 먼저 보겠습니다. #include #include int* num() { int num_valu.. 2022. 7. 9.
C언어의 메모리 구조 프로그램 실행 시 프로그램을 위한 메모리 공간은 운영체제에 의해 미리 마련됩니다. 마련된 메모리 공간에 변수가 선언됩니다. 메모리 구성과 구성별 저장되는 데이터 유형 운영 체제에 의해 할당된 메모리 공간 운영 체제에 의해 할당된 메모리 공간은 아래와 같습니다. 메모리 공간을 나누어 유사한 성향의 데이터를 묶어서 저장합니다. 관리가 용이해지고 메모리 접근 속도가 빨라집니다. 코드 영역 코드 영역은 실행할 프로그램의 코드가 저장되는 메모리 공간입니다. 따라서 CPU는 코드 영역에 저장된 명령문들을 하나씩 실행합니다. 데이터 영역 데이터 영역은 *전역변수와 static 변수가 할당됩니다. 프로그램 시작과 동시에 할당되어 프로그램 종료 시까지 남아있게 됩니다. *전역 변수와 static 변수의 공통점과 차이점을.. 2022. 7. 9.
[C++] 함수 매개변수의 디폴트 값 C++에서는 함수의 매개 변수의 디폴트 값을 지정하여 어느 값이 인자에 전달되지 않더라도 디폴트 값을 사용할 수 있도록 설정할 수 있습니다. 함수 매개변수의 디폴트 값 아무 인자도 입력되지 않으면, 미리 지정한 기본 값이 매개 변수에 들어갈 수 있습니다. #include int calc(int a = 2, int b = 10) { return a*b; } int main() { std::cout 2022. 7. 7.
[C++] 함수의 오버로딩 C에서는 함수의 명칭이 동일하다면 컴파일이 되지 않습니다. 즉 허용되지 않습니다. C++에서는 이름이 동일하더라도 구별이 가능하다면 같은 명칭의 함수를 사용할 수 있습니다. 이를 '함수의 오버로딩'이라고 합니다. 함수의 오버로딩 C에서 아래 함수 선언은 컴파일 되지 않습니다. 이는 함수 이름이 동일하기 때문입니다. #include int main() { int solution(int a); int solution(int b, int c); return 0; } C++에서는 구별가능하다면 함수의 오버로딩을 지원하고 있습니다. #include int main() { int solution(int a); int solution(int b, int c); return 0; } 이 경우는 함수의 인자가 첫 번째 .. 2022. 7. 7.