본문 바로가기

전체 글221

c언어 동적 메모리 할당, 사용, 반납 방법 알아보기 c언어 동적 메모리 할당, 사용, 반납 방법 알아보기 네 안녕하세요, 이번 포스팅에서는 동적 메모리를 할당하는 방법, 사용하는 방법, 그리고 반납하는 방법에 대하여 알아보도록 하겠습니다. 이전 포스팅에서는 동적 메모리의 기본적인 것들만 간단히 알아보았는데, 직접 사용하기 위해서는 사용법을 알아야겠죠? 아주 중요한 부분인 만큼 많이 알아가셨으면 좋겠습니다. 그럼 지금부터 시작하도록 하겠습니다. 1. 동적 메모리 할당하기(malloc()) 동적 메모리를 할당하기 위해서는 malloc()이라는 함수를 씁니다. 여기서 인수의 사이즈는 할당을 받고 싶은 바이트 수가 됩니다. malloc() 함수는 헤더 파일에 함수 원형이 정의가 되어있고, 여기서 쓰이는 size_t는 기본적으로 unsigned int형으로 정의가.. 2023. 2. 27.
c언어 동적 할당 메모리에 대하여 알아보기 c언어 동적 할당 메모리에 대하여 알아보기 네 안녕하세요, 이번 포스팅에서는 동적 할당 메모리에 대하여 알아보도록 하겠습니다. 동적 할당 메모리는 실전 프로그래밍을 할 때 c언어 베이스의 모듈이나 웹 프레임워크 등에서 정말 자주 쓰입니다. 그렇기 때문에 매우 중요한 요소이기 때문에 잘 숙지하셔야 합니다. 그럼 지금부터 시작해 보도록 하겠습니다. 1. 동적 할당 메모리란? 메모리 할당 방식에는 크게 두 가지가 있습니다. 정적 메모리 할당(static memory allocation) 동적 메모리 할당(dynamic memory allocation) 이 중에 우리는 미리 메모리 할당 공간을 정해서 저장을 하는 정적 할당 방식을 썼습니다. 이런 식으로 말이죠. int score[100]; 이렇게 하면 100개.. 2023. 2. 22.
c언어 여러가지 전처리기와 매크로, 다중 소스 파일을 이용하여 여러 가지 문제 풀기(ASSERT 매크로 작성하기, 비트 매크로 작성하기, 여러가지 버전 정의하기(디럭스 버전과 스탠다드 버전 정.. c언어 여러 가지 전처리기와 매크로, 다중 소스 파일을 이용하여 여러 가지 문제 풀기(ASSERT 매크로 작성하기, 비트 매크로 작성하기, 여러 가지 버전 정의하기(디럭스 버전과 스탠더드 버전 정의하기), 리눅스 버전과 윈도 버전 분리하기, 헤더 파일 중복 포함 막기, 전처리기 사용해서 원의 면적 구하기) 네 안녕하세요, 이번 포스팅에서는 지금까지 배웠던 전처리기들과 매크로, 그리고 다중 소스 파일을 이용하여 여러 가지 문제들을 풀어보는 시간을 가져보려 합니다. 매크로를 거는 것과 다중 소스 파일을 다루는 것은 매우 중요한 부분들 중 하나이므로, 잘 알아두셔야 합니다. 그럼 지금부터 시작하도록 하겠습니다. 1. ASSERT 매크로 작성하기 ASSERT 매크로는 프로그램을 디버깅할 때 자주 쓰이는 매크로입.. 2023. 2. 22.
c언어 비트 필드 구조체에 대하여 알아보기 c언어 비트 필드 구조체에 대하여 알아보기 네 안녕하세요, 이번 포스팅에서는 비트 필드구조체에 대하여 알아보도록 하겠습니다. 비트 필드 구조체는 구조체의 한 종류인데, 일반적인 구조체와는 좀 다른 특징을 지니고 있습니다. 그럼 어떤 특징이 있는지 한 번 보도록 하겠습니다. 1. 비트 필드 구조체란? 비트 필드 구조체는 쉽게 말하면 구조체의 멤버들일 비트 단위로 쪼개져 있는 구조체입니다. 그렇기 때문에 비트들을 멤버로 가지며, 비트를 원하는 만큼 할당할 수 있기 때문에 메모리 효율이 그만큼 올라갑니다. 간단한 예시로 상품 정보를 저장하는 비트 필드 구조체를 작성해 보도록 하겠습니다. struct product { unsigned style : 3; unsigned size : 2; unsigned colo.. 2023. 2. 22.
c언어 다중 소스 파일에 대하여 알아보기 c언어 다중 소스 파일에 대하여 알아보기 네 안녕하세요, 이번 포스팅에서는 다중 소스 파일에 대하여 알아보도록 하겠습니다. 지금까지 제가 설명드렸던 것들은 전부 단일 파일로 이루어진 것들이었습니다. 하지만 실제로 우리가 작업을 하다 보면 정말 많은 파일들을 연결해서 하나의 파일로 쏴서 출력하는 걸 하게 됩니다. 그걸 우리는 다중 소스 파일이라고 합니다. 그래서 이번 포스팅에서는 이 다중 소스 파일에 대하여 자세히 알아보는 시간을 가져보려고 합니다. 그럼 지금부터 시작하도록 하겠습니다. 1. 소스 파일을 여러 개를 만드는 이유 우리가 소스 파일을 여러 개를 만드는 이유는 서로 관련이 있는 함수들은 같이 모아서 저장하면 다음에 그 함수를 쓸 일이 생기면 그냥 호출만 하면 되기 때문에 오히려 그 편이 가독성도.. 2023. 2. 22.
c언어 #if, #else, #elif, #endif에 대하여 알아보기 c언어 #if, #else, #elif, #endif에 대하여 알아보기 네 안녕하세요, 이번 포스팅에서는 #if, #else, #elif, #endif에 대하여 알아보도록 하겠습니다. 이전 포스팅에서 배웠던 #ifdef와 같이 조건부 컴파일을 하는 전처리기들인데요, 이들에 대하여 좀 더 자세하게 알아보는 시간을 가져보도록 하겠습니다. 그럼 지금부터 시작하겠습니다. 1. #if의 조건부 컴파일 #ifdef의 경우는 매크로의 값은 상관하지 않았지만, #if의 경우는 매크로의 값에 따라서 컴파일 여부를 결정합니다. 그리고 #if는 우리가 잘 쓰는 if문과 비슷하게 관계 연산자나 논리 연산자를 쓸 수 있습니다. 그리고 그 조건은 상수 수식이어야 합니다. 예를 들자면 이렇게 할 수 있겠네요. #if DEBUG =.. 2023. 2. 21.
c언어 #ifdef와 #endif, #ifndef, #undef에 대하여 알아보기 c언어 #ifdef와 #endif, #ifndef, #undef에 대하여 알아보기 네 안녕하세요, 이번 포스팅에서는 #ifdef와 #endif에 대하여 알아보도록 하겠습니다. 우리가 전처리를 쓸 때 코드 전반에 적용이 되는 것들만 썼었는데, 이번에는 특정한 조건에서만 쓰는 전처리기에 대하여 알아보도록 하겠습니다. 그럼 바로 시작하도록 하겠습니다. 1. 조건부 컴파일 지시자 : #ifdef, #endif 조건부 컴파일 지시자는 어떤 조건이 만족되는 경우에만 지정된 코드 블록을 컴파일하도록 하는 지시자입니다. 이럴 때 쓰는 지시자가 바로 '#ifdef'입니다. 사용 방법은 아래와 같습니다. #ifdef DEBUG printf("value = %d\n", value); #endif 이런 식으로 씁니다. #if.. 2023. 2. 21.
c언어 함수 매크로에 대하여 알아보기 c언어 함수 매크로에 대하여 알아보기 네 안녕하세요, 이번 포스팅에서는 함수 매크로에 대하여 알아보도록 하겠습니다. 제가 이전 포스팅에서 매크로의 종류는 크게 두 가지가 있다고 그랬습니다. 단순 매크로 함수 매크로 이 두 가지 중에 이전 포스팅에서 단순 매크로에 대해 다뤘고, 이번에는 함수 매크로에 대하여 자세히 다뤄보도록 하겠습니다. 그럼 지금부터 시작하겠습니다. 1. 함수 매크로 함수 매크로는 매크로가 함수처럼 매개 변수를 가지는 형태의 매크로를 말합니다. 이 매크로를 사용하는 이유는 함수처럼 복잡한 계산을 숨기고 훨씬 간단하게 표현을 하기 위해 씁니다. 예를 하나 들어보도록 하겠습니다. #define SQUARE(x) ((x) * (x)) 이렇게 써봤습니다. 이건 어떤 수의 제곱을 구하는 매크로를 .. 2023. 2. 21.