본문 바로가기
보안/rust

Rust vs C++

by 물보라를일으킬래 2023. 5. 15.

동적 메모리 오버헤딩으로 보는 Rust의 안정성

 

목표:

벡터를 통해 메모리 오버헤딩을 발생시키는 C++코드를 작성하고 과연 Rust는 이를 비껴갈 수 있는지 어셈블리어로 분석해 볼 것이다.

 

메모리 오버헤딩이 발생하는 전제

1. 벡터에 계속해서 요소를 동적으로 추가하는 경우

    vector<int> vec;

    // 메모리 오버헤딩을 의도적으로 발생시키기
    while (true) {
        vec.push_back(1);
    }

2. 초기 예상치보다 큰 용량 할당

3. 벡터를 사용해서 대용랑의 데이터 처리

4. 잘못된 메모리 관리 

   벡터 사용하고 메모리 해제하지 않는 경우=Rust는 소유권이 있어서 해제하지 않아도 괜찮다?

void overVev(){
	vector<int>* overVec = new vector<int>(1000);}
    
    
int main(){
	for(int i=0; i<100; i++{
    	overVec();}
        
    return 0;}

 

'보안 > rust' 카테고리의 다른 글

[Rust 기초] 코드 실행 방법  (0) 2023.05.13
rust 구조체와 소유권  (0) 2023.03.01

댓글