Buffer

    [C++] Buffer Overflow (버퍼 오버플로우) 예시

    String Buffer Overflow 20byte의 buf를 할당하고 std::cin 함수를 통해 문자열을 입력받는다. 하지만 여기서도 입력한 문자열의 길이를 검사하는 부분이 없어서 20byte 이상의 문자열을 입력한다면 버퍼오버플로우가 발생할 수 있다. #include using namespace std; int main() { char buf[20]; cin >> buf; // string 제외 입력에 따라 자동 할당됨. } Container Overflow f 함수 부분이다. vector v를 src 매개변수로 받는다. std::vector dest(5) 7행에서 기본값(0)으로 초기화 된 5개의 원소를 가지는 vector dest를 생성한다. std::copy(src.begin(), src.e..

    [Direct X] Constant Buffer(상수 버퍼) 란?

    상수 버퍼(Constant buffer)는 정점 및 픽셀 셰이더에서 사용될 상수를 모아 놓은 버퍼이다. 상수 버퍼 사용을 위해 cpp 코드 영역에 상수 버퍼 타입의 구조체를 정의하고 셰이더에도 동일한 포맷으로 상수 버퍼 구조체를 정의. 그리고 시스템 메모리에서 구조체 변수 생성 및 값 설정 후 정점 혹은 픽셀 셰이더에 Set 시킨다. 값 설정 및 set은 보통 매 프레임 실행되는 Render() 함수에 적용한다. 그러면 이 Set 시킨 데이터를 설정한 셰이더에서 사용할 수 있다. 상수 버퍼를 사용하는 이유? 셰이더에서 매번 사용되는 상수, 하지만 cpp 파일에서 전달해주어야 한다고 가정할 때, 개별적으로 하나하나 값을 전달해 주는 것은 대역폭(bandwidth)이 크고 부담이 많이 된다고 한다. 따라서 ..