size_t 예제

휴대성 문제 클래식 C (C 프로그래밍 언어에서 브라이언 Kernighan과 데니스 리치에 의해 설명 C의 초기 방언, 프렌티스 홀, 1978) size_t를 제공하지 않았다. C 표준 위원회는 다음 예제에서 설명한 이식성 문제를 제거하기 위해 size_t를 도입했습니다. 나는이 문제에 대해 생각했고 나에게는 일관성있는 관점에서 의미가 있습니다. 예를 들어 원래 size_t는 당일의 16비트 운영 체제에 대해 서명되지 않은 int에 할당되었을 수 있습니다. 32비트가 나왔을 때 개발자가 해야 할 일은 서명되지 않은 긴 형식def를 재정의하는 것이었습니다. 이는 모든 관련 변수에 영향을 주는 헤더 파일의 한 위치에서 단일 변경입니다. 그렇지 않으면 메모리 크기 변수에 대해 전체 코드를 빗질해야 하며 각 코드를 다시 입력해야 합니다. 하나 또는 두 개를 놓칠 확률은 큽합니다. 예를 들어 malloc() 함수는 size_t 인수를 사용하여 메모리 덩어리를 따로 설정합니다.

나는 int, L은 긴 스탠드, LL은 긴 스탠드, P는 포인터 (함수에 대한 포인터가 아닌 데이터)를 의미합니다. 각 문자와 번호는 선택 사항입니다. 예를 들어 I16P32 아키텍처는 길거나 긴 포인터를 지원하는지 여부를 설명하지 않고 16비트 int 및 32비트 포인터를 지원합니다. 두 개의 연속된 형식의 크기가 같은 경우 일반적으로 첫 번째 숫자를 생략합니다. 예를 들어 일반적으로 I16L32P32를 I16LP32로 작성합니다. 표기는 일반적으로 문자를 정렬하여 해당 숫자가 오름차순으로 표시되도록 합니다. 예를 들어 IL32LL64P32는 32비트 int, 32비트 길이, 64비트 길이 및 32비트 포인터가 있는 아키텍처를 나타냅니다. 그러나 ILP32LL64로 더 일반적으로 나타납니다.

Standard C 라이브러리의 수많은 함수는 인수를 허용하거나 개체 크기를 바이트로 나타내는 값을 반환합니다. 예를 들어 malloc(n)의 외로운 인수는 할당할 개체의 크기를 지정하고 memcpy(s1, s2, n)의 마지막 인수는 복사할 개체의 크기를 지정합니다. strlen(들)의 반환 값은 null 문자를 제외한 null 종료 문자 배열 s의 길이(문자 수)를 생성합니다. 대부분의 컴퓨터에서 가장 큰 서명되지 않은 int 값은 가장 큰 양수 int 값의 약 두 배입니다. 예를 들어 16비트 투-보체 컴퓨터에서 가장 큰 서명되지 않은 int 값은 65,535이고 가장 큰 양수 int 값은 32,767입니다. memcpy의 세 번째 매개 변수로 서명되지 않은 int를 사용하면 int를 사용할 때보다 약 두 배 큰 개체를 복사할 수 있습니다. 크기_t 형식은 C++ 표준 라이브러리 전체에도 나타납니다. 또한 C++ 라이브러리는 size_t를 사용하는 것보다 훨씬 더 많은 관련 심볼 size_type을 사용합니다.

모든 변수는 물리적 차원, 돈의 양, 각도 등 과 같은 유형 이외의 의미를 가지고 있습니다. size_t 원칙을 확장하여 이 모든 것에 대해 많은 수의 typedefs를 만들 수 있지만 그렇게 하는 것은 터무니없는 일입니다. 내 느낌은 변수 및 함수 반환 형식의 의미를 typedefs가 아닌 변수 이름과 함수 이름으로 표현해야한다는 것입니다. size_t는 다음과 같은 다양한 헤더 파일에 정의된 서명되지 않은 정수 데이터 유형입니다.