본문 바로가기
Computer Science/Array & String

[C++] size_t와 int 차이점

by 기억보다 기록을 2024. 1. 30.
반응형

 

 

 


 

[ C++ ] size_t 이란

 


size_t는 C++에서 부호 없는 정수(unsigned integer)로 정의된 데이터 형식입니다. 주로 배열의 크기, 메모리 할당, 인덱스와 같이 음수가 아닌 크기 값을 나타내는 데 사용됩니다. 

 

특히, C++ 표준 라이브러리의 많은 함수들에서 size_t를 사용하여 객체의 크기나 위치 등을 나타냅니다.

 

// 배열의 크기를 표현하는 예제

#include <iostream>
#include <cstddef> // size_t가 정의된 헤더

using namespace std;

int main() {

    int myArray[10];
    size_t arraySize = sizeof(myArray) / sizeof(myArray[0]);
    cout << "Size of myArray: " << arraySize << endl;

    return 0;
}

 

 

 

 


size_t  사용하는 이유


 

size_t 메모리 할당과 같은 연산에서 사용되는 이유는 다음과 같습니다:

size_t는 부호 없는 정수형으로 정의되어 있어, 음수 값을 표현하지 않습니다. 메모리 크기는 음수가 될 수 없기 때문에 부호 없는 형식을 사용하는 것이 자연스럽습니다.

size_t의 크기는 플랫폼에 따라 다를 수 있지만, 주로 포인터의 크기와 관련이 있습니다. 이로 인해 코드가 32비트 아키텍처와 64비트 아키텍처에서 모두 동작하도록 플랫폼 독립성을 유지할 수 있습니다.

 

C++ 표준 라이브러리에서 많은 함수들은 크기와 관련된 매개변수 및 반환 값으로 size_t를 사용합니다. 따라서 size_t를 사용하면 표준 라이브러리와의 일관성을 유지할 수 있습니다.

메모리 할당은 양의 정수 크기를 다루기 때문에 부호 없는 형식인 size_t를 사용하는 것이 자연스럽습니다. 음수 값이 필요하지 않고, 메모리 크기에 특화된 형식을 사용함으로써 코드의 가독성을 높일 수 있습니다.

 

따라서, size_t는 메모리 할당과 관련된 작업에서 사용되어 플랫폼 독립성과 코드의 일관성을 유지하며, 음수 크기를 다루지 않기 위한 목적으로 선택됩니다.

 

 

// 예시: 100바이트 크기의 메모리 할당

#include <iostream>
#include <cstddef>

using namespace std;

int main() {
   
    size_t bufferSize = 100;
    char* buffer = new char[bufferSize];

    // 메모리 사용

    // 메모리 해제
    delete[] buffer;

    return 0;
}

 

 

 

 


 

 

 

 

 


 

 

[ C++ ] int 개념


int는 C++에서 사용되는 기본 데이터 형식 중 하나로, 정수를 나타냅니다. 이름은 "integer"의 줄임말이며, 부호 있는 정수를 표현하는 데 사용됩니다. 

 

기본적으로 시스템 아키텍처에 따라 4바이트 또는 8바이트 크기를 가집니다.
표현 범위는 해당 아키텍처에 따라 다르지만, 대체로 -2,147,483,648부터 2,147,483,647까지(32비트) 또는 -9,223,372,036,854,775,808부터 9,223,372,036,854,775,807까지(64비트)의 범위를 갖습니다.

 

#include <iostream>

using namespace std;

int main() {
    int number = 42; 

    cout << "The value of the integer is: " << number << endl;

    // 정수 연산
    int sum = number + 10;
    cout << "The sum is: " << sum << endl;

    return 0;
}

 

 


 

 

size_t와 int 차이점


size_t int는 C++에서 서로 다른 데이터 형식으로, 주로 다른 목적으로 사용됩니다. 

다음에 두 형식 간의 주요 차이점입니다:

부호 여부:

int는 부호 있는 정수 데이터 형식으로, 양수와 음수 값을 표현할 수 있습니다.
size_t는 부호 없는 정수 데이터 형식으로, 양수 값만을 표현할 수 있습니다. 음수 값이 필요 없는 크기를 표현할 때 사용됩니다.

 

크기:

int는 플랫폼에 따라 다르지만 보통 4바이트 또는 8바이트 크기를 가집니다.
size_t는 플랫폼에 따라 다르지만 포인터의 크기와 동일하며, 주로 메모리의 크기를 표현하는 데 사용됩니다. 32비트 시스템에서는 4바이트, 64비트 시스템에서는 8바이트입니다.


용도:
int는 일반적인 정수 값의 표현에 사용되므로 반복문의 인덱스, 카운터 및 일반적인 정수 연산에 적합합니다.
size_t는 주로 배열의 크기, 메모리 할당 및 인덱스와 같이 음수가 아닌 크기 값을 표현하는 데 사용됩니다.

 

 

 

#include <iostream>
#include <cstddef>

int main() {
    int i = -1;
    size_t s = static_cast<size_t>(i);

    cout << "int: " << i << endl;
    cout << "size_t: " << s << endl;

    return 0;
}

 

따라서, 개발자가 하는 데이터의 특성과 목적에 따라 적절한 선택을 해야 합니다. 만약 크기를 다루거나 인덱스로 사용할 경우에는 size_t를, 그 외의 경우에는 int를 고려하면 됩니다.

 

 


 

 

 

반응형

'Computer Science > Array & String' 카테고리의 다른 글

[ C++ ] size()와 length() 함수 차이점  (0) 2023.05.24