동적 메모리 오버헤딩으로 보는 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 |
댓글