버퍼 오버플로우 버퍼 오버플로란? | Cloudflare 버퍼 오버플로: 버퍼에 데이터를 쓰는 소프트웨어가 버퍼의 용량을 초과하여 인접한 메모리 위치를 덮어쓸 때 발생하는 비정상적인 현상 공간이 충분하지 않은 컨테이너에 너무 많은 정보가 전달되어 결국 해당 정보가 인접한 컨테이너의 데이터를 대체하게 되는 것 프로그램 실행을 방해하거나 제어하기 위해 컴퓨터의 메모리를 수정하려는 공격자가 악용할 수 있음. CS/C++ 2023.12.08
함수 호출 stack frame 관련 [자료구조] 스택 프레임(Stack Frame) (velog.io) [자료구조] 스택 프레임(Stack Frame) 함수가 호출될 때 스택에 생성되는 공간인 스택 프레임 (Stack Frame) velog.io 스택 프레임(Stack Frame) 함수가 호출될 때, 그 함수만의 스택 영역을 구분하기 위하여 생성되는 공간이다. 메모리의 스택 영역은 함수의 호출과 관계되는 지역 변수 및 매개변수가 저장되는 영역이다. 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다. CS/C++ 2023.12.08
전방선언이 필요한 이유? C++ 전방 선언 :: Gyong (tistory.com) C++ 전방 선언 전방 선언 -> 외부 파일 어딘가에 해당 클래스가 존재한다고 알려주는 역할 다양한 파일들을 만들고 서로 엮는 과정에서 불필요한 파일의 정보까지 가져오는 상황이 발생한다. 이를 해결하기 위 gyong0.tistory.com 코딩맛집 :: [C++] 전방선언 (Forward Declaration) (tistory.com) [C++] 전방선언 (Forward Declaration) C++에서 미리 함수를 정의하지 않으면 순차적으로 코드를 읽어들여 오류를 발생시킨다. (식별자 찾을 수 없음) 그러나 전방선언이 이뤄졌다면 컴파일러는 오류 없이 지나간다. C++ 전방선언 (Forwar coding-restaurant.tistory.com .. CS/C++ 2023.12.08
부모클래스 소멸자를 virtual로 만들지 않으면? C++에서 소멸자에 virtual을 사용하는 이유는? (tistory.com) C++에서 소멸자에 virtual을 사용하는 이유는? C++에서 소멸자에 virtual을 사용해야 하는 이유는 뭘까? 우선 ClassA를 부모 클래스, ClassB를 ClassA를 상속하는 자식클래스라고 할때 생성자와 소멸자는 다음과 같이 호출된다. ClassB *B = new ClassB (A 생 life-inus.tistory.com ClassA = 부모 클래스 / ClassB = ClassA를 상속하는 자식클래스라고 할때 ClassB *B = new ClassB (A 생성자 -> B 생성자) delete B (B 소멸자 -> A 소멸자) 생성자와 소멸자는 이 순서로 호출됨 if 다형성 이용을 위해 ClassA 포인터에 자.. CS/C++ 2023.12.08
[C++]Vector와 List의 차이점 1.Array Vs List 차이점 Array : 메모리 상에 데이터가 연속적으로 저장됨 List : 메모리 상에 데이터가 비연속적으로 저장됨 2.Vector Vs List 차이점 99퍼센트는 벡터를 씀 (벡터가 더 빠름) 랜덤 접근 삽입/삭제 뒤쪽 삽입/삭제 벡터 O(1) O(n) - 하나하나 다 밀어야함 O(1) 리스트 O(n) - iterator를 사용해야함 O(1) O(1) if find함수를 쓸 때는 둘 다 O(n) 시간복잡도가 필요함 but vector의 find가 훨씬 빠름 실제 저장 공간은 격자구조. vector는 순차적으로 저장됨 -> 다 cache안에 들어감 list는 여기저기 끊어져있음 -> cache miss가 일어남 더보기 자료구조의 성능을 비교할 때는 원소의 크기, 지역성에 대한.. CS/C++ 2023.10.01