러스트의 기본 자료형의 크기를 확인하거나, 할당된 객체의 사이즈를 계산하는 방법을 알아보겠습니다.
1. 기본 자료형 크기 확인 (size_of)
mem::size_of()
을 이용하여 어떤 타입의 크기를 확인할 수 있습니다.
use std::mem
모듈 importmem::size_of::<TYPE>()
은 TYPE의 사이즈 리턴
아래 예제는 u16
자료형의 크기를 바이트로 출력합니다.
use std::mem;
fn main() {
println!("u16: {} byte", mem::size_of::<u16>());
}
Output:
u16: 2 byte
다양한 자료형의 크기 확인
use std::mem;
fn main() {
println!("bool: {} byte", mem::size_of::<bool>());
println!("u8: {} byte", mem::size_of::<u8>());
println!("u16: {} bytes", mem::size_of::<u16>());
println!("u32: {} bytes", mem::size_of::<u32>());
println!("u64: {} bytes", mem::size_of::<u64>());
println!("i8: {} byte", mem::size_of::<i8>());
println!("i16: {} bytes", mem::size_of::<i16>());
println!("i32: {} bytes", mem::size_of::<i32>());
println!("i64: {} bytes", mem::size_of::<i64>());
println!("f32: {} bytes", mem::size_of::<f32>());
println!("f64: {} bytes", mem::size_of::<f64>());
println!("char: {} bytes", mem::size_of::<char>());
}
Output:
bool: 1 byte
u8: 1 byte
u16: 2 bytes
u32: 4 bytes
u64: 8 bytes
i8: 1 byte
i16: 2 bytes
i32: 4 bytes
i64: 8 bytes
f32: 4 bytes
f64: 8 bytes
char: 4 bytes
2. struct 크기 확인 (size_of)
정의된 struct의 이름과 size_of()
로 struct의 크기를 계산할 수 있습니다.
아래 예제는 Person
의 사이즈를 계산하여 출력하는 코드입니다.
use std::mem;
struct Person {
name: String,
age: u32,
}
fn main() {
println!("Person: {} byte", mem::size_of::<Person>());
}
Output:
Person: 32 byte
3. 배열 크기 확인 (size_of)
길이가 5인 배열은 [i32; 5]
로 선언할 수 있는데요.
이것을 size_of
에 전달하여 배열의 크기를 확인할 수 있습니다.
use std::mem;
fn main() {
let arr: [i32; 5] = [1, 2, 3, 4, 5];
println!("[i32; 5]: {} byte", mem::size_of::<[i32; 5]>());
}
Output:
[i32; 5]: 20 byte
4. 객체/변수 크기 확인 (size_of_val)
타입이 아닌, 생성된 객체에 대한 사이즈를 확인하려면 mem::size_of_val()
를 사용해야 합니다.
use std::mem
모듈 importmem::size_of_val(&VAR))
는 VAR 객체의 크기 리턴 (Reference로 인자 전달)
아래 예제는 기본 자료형, struct, 배열 객체에 대한 크기를 출력하는 예제입니다.
use std::mem;
struct Person {
name: String,
age: u32,
}
fn main() {
// 기본 자료형의 객체
let b: bool = false;
println!("b: {} byte", mem::size_of_val(&b));
// struct의 객체
let p: Person = Person {
name: String::from("Alex"),
age: 30,
};
println!("p: {} byte", mem::size_of_val(&p));
// 배열 객체
let arr: [i32; 5] = [1, 2, 3, 4, 5];
println!("arr: {} byte", mem::size_of_val(&arr));
}
Output:
b: 1 byte
p: 32 byte
arr: 20 byte
Loading script...
Related Posts
- Rust - String을 char 리스트(Vector)로 변환
- Rust - 문자가 대문자인지 소문자인지 확인
- Rust - String에서 줄바꿈(newline) 문자 제거 방법
- Rust - String 대문자, 소문자 변환
- Rust - 현재 시간 가져오기 (DateTime, chrono)
- Rust - 예외 처리 방법 (Exception handling)
- Rust - String.find()으로 문자열 Index 찾기
- Rust - match (Switch) 사용 방법
- Rust - Vector의 요소 제거 방법 (remove, retain, drain)
- Rust - String의 특정 Index 값 가져오기
- Rust - 문자열 뒤집기, 역순으로 변경
- Rust - String 객체에 문자열 추가하기
- Rust - sleep(), 몇 초 지연/대기 방법
- Rust - String을 Int, Float으로 변환
- Rust - Integer를 String으로 변환
- Rust - Float를 String으로 변환
- Rust - String 비교 방법 (==, !=, eq, ne)
- Rust - String을 str으로, str을 String으로 변환
- Rust - String 공백 제거 (trim, replace)
- Rust - 2개의 배열이 같은지 비교 (==, equals)
- Rust - 배열 길이 가져오기 (Array length)
- Rust - Vector를 배열로 변환 (vector to array)
- Rust - 배열의 최소, 최대 값 찾기 (min, max)
- Rust - 배열의 합계, 평균 (sum, average)
- Rust - 2개의 Vector가 같은지 비교 (==, equals)
- Rust - HashMap을 Vector로 변환
- Rust - Vector의 최소, 최대 값 찾기 (min, max)
- Rust - Vector의 합계, 평균 (sum, average)
- Rust - 벡터 길이 가져오기 (Vector length)
- Rust - 배열을 HashSet으로 변환
- Rust - 배열을 벡터로 변환하는 방법
- Rust - 배열(벡터) 모든 요소 출력
- Rust - 배열 나누기, 자르기 (split_at, slice)
- Rust - 2개 벡터 하나로 합치기
- Rust - HashSet을 Vector로 변환