본문 바로가기

연구소👨‍💻/CS연구소16

[C++] 포인터와 스마트 포인터 지난번 참조와 포인터에서 이어진다. 최근 백준 문제를 풀면서 메모리 문제가 있었다. 한 객체를 두 개의 포인터로 지정해놓았는데. 다른 한 포인터로 delete를 해버리니 다른 포인터에 접근을 하는 것 자체만으로도 에러가 발생했다. 나중에 알고보니 이게 C++에서 흔히 일어나는 댕글링 포인터 문제라는걸 알았다.  Dangling pointer는 메모리가 해제된 뒤에 그 메모리를 가리키는 포인터를 의미한다고한다. 지난번에 말한 것 처럼 C++은 다른 언어들에 비해 메모리를 수동으로 등록하고 해제하는게 가능한데 그러다보니 해제된 메모리에 접근하는 일들이 생기고 그것때문에 접근 위반 오류(segmentation fault)가 나는 것이다.수동 메모리 관리는 빠르지만 이런 문제들이 많다 이외에도 메모리 누수같은 .. 2024. 5. 11.
[C++] 포인터, 참조 포인터는 C하면 가장 큰 특징으로 생각되는 용어다. 그만큼 질문도 많고 내용도 많다. 그러다보니 겉핥기만 허게되기 십상이다.우선 내가 여태까지 생각하던 포인터는 무엇인지 생각해 봤다.포인터는 데이터가 저장된 메모리를 가리키는 데이터인가포인터는 어떤 의미에선 참조와 비슷한 역할을 한다. 참조 역시 데이터가 저장된 메모리의 정보를 가지고 있다. 이렇게 되면 참조는 포인터와 대조군이다 그럼 참조랑 포인터는 정확히 뭐가 다를까.일단 내가 아는바에 따르면 참조는 선언과 초기화가 동시에 일어나며 한번 초기화하면 다시 초기화 할 수 없다.반면 포인터는 한번 변수를 초기화하고 다시 초기화 할 수 있으며 null값을 가질 수도 있다. G쌤한테 이걸 물어도 크게 틀렸다고 말하진 않았다. 그래도 궁금한건 왜 그런가였다. 아.. 2024. 5. 3.
[미디어 서버] 대환장 미디어 서버 제작 프로젝트로 실시간 미디어 스트리밍 서비스를 만들고자 했다. 일단 처음엔 기세좋게 kurento서버를 미디어서버로 두고 통신을 하려했으나 문제가 한 두개가 아니었다. 일단 납기 문제가 제일 중요하기 때문에 빠르게 기존의 방식을 버리고 갈아타기로했다. 다른 방식이 예제가 많은 nginx방식인데 많이들 한다는 점에서 쉬운점이 있겠으나 한 번도 안써봤으니 예상못한 문제로 터져버릴 수도 있을 것 같았다. 그런 점에서 이번엔 하나하나 문제점을 써가면서 풀어가기로했음 일단 시나리오는 스트리머가 서버에 방을 만들겠다고 요청을 보냄서버가 채널을 열어줌스트리머가 자신의 미디어 내용을 보냄이렇게 하려했고 빠르게 G쌤과 대화했다나는 nginx로 실시간 미디어 서버를 하기로 결정했어내 지금 시나리오상으론 두개가 필요해 [스트리.. 2024. 5. 2.
[C++] RTTI 한 개의 개념을 이해하기 위해선 절대적인 정의가 중요한게 아니라 상대적인 관계 속 위치가 중요하다.RTTI의 정의아예 RTTI에 대해서 아예 몰랐을 때 이렇게 정의해봤다RTTI는 실행시간에 일어나는 타입 결정자다. G쌤은 이 말에 대해서 틀렸다고 한다RTTI(Run-Time Type Information)는 "타입 결정자"라고 부르기보다는 "타입 식별자"나 "타입 정보 제공자"에 더 가깝습니다. "타입 결정자"라는 표현은 변수나 객체의 타입을 선언하거나 초기화할 때 사용되는 개념과 혼동될 수 있습니다. 예를 들어, 프로그램 코드에서 변수를 선언할 때 사용하는 타입(int, float 등)은 그 변수의 타입을 "결정"합니다.반면, RTTI는 프로그램이 실행 중일 때 객체의 타입 정보를 조회하거나, 객체 간.. 2024. 4. 26.