보안/rust
Rust vs C++
물보라를일으킬래
2023. 5. 15. 20:11
동적 메모리 오버헤딩으로 보는 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;}