본문 바로가기
반응형

Programming/C C++11

C/C++ 메모리 복사 memcpy 함수 memcpy란 특정 메모리를 다뤄 복사하는 함수이다. 헤더 파일을 보면 문자열 관련 함수로 보일 수 있으나 그것보다 더 범용성이 넓다. memory copy의 약자이며 지정한 메모리의 내용을 다른 곳으로 복사하기 위해 사용한다. 깊은 복사를 사용하여 복사를 진행한다. 기본 함수 및 인자 void* memcpy(void* dst, void* src, size_t num) string.h 헤더 파일을 포함해야 하며 memory.h에도 정의되어있다. c++에서는 헤더 파일을 포함하면 된다. dst : 복사받는 메모리를 가리키는 포인터 src : 복사하려는 원은 메로리를 가리키는 포인터 num : 복사할 바이트 수 성공 시 dst 포인터를 반환하며 실패 시 NULL을 반환한다. memcpy 함수 사용 memcp.. 2021. 7. 16.
C/C++ memset() 함수 memset함수? memset 함수는 메모리의 시작점부터 지정한 범위를 특정한 문자로 지정하는 함수이다. 함수 뜻 그대로 memory set이다. 기본 함수 및 인자 void* memset(void* str, int value, size_t size); str : 설정하려는 문자열의 시작 주소 value: 초기화하려는 값, unsigned char로 변환하기 때문에 문자 size : 변환할 만큼의 길이, 자료형의 배수로 입력하고 배수만큼 초기화된다. 헤더 파일은 에 선언되어 있으며 에도 정의되어있다. C++에서는 을 사용한다. memset함수 사용 memset함수는 할당된 특정 메모리 공간을 특정한 값으로 초기화하거나 어떠한 문자열을 특정 값으로 초기화하기 위해 사용된다. memset()은 성공 시 첫 .. 2021. 7. 11.
Segmentation Fault 세그멘테이션 오류 (Core dump) Segmentaiton Fault 세그멘테이션 오류 흔히 포인터 관련 오류로 쉽게 접하고 사실은 메모리 관련 오류이다. 흔히 리눅스, 유닉스 계열에서 프로그래밍을 하다 보면 (Segmentaion Fault) 세그멘테이션 오류(Core dumped)라는 오류를 종종 보았을 것이다. 이는 메모리 보호 기법에 의해 발생한 오류로 허가되지 않은 메모리의 접근을 방지하기 위해서이다. MS의 윈도우에서는 예외처리를 하여 다양한 오류 상황에 대처하도록 설계되어있다. 그러나 UNIX 계열에는 단지 허가되지 않은 메모리의 접근을 에러 처리할 뿐이다. 그래서 오류를 찾기도 조금 더 어렵고 어디서 발생했는지 모르는 경우도 발생한다. 메모리 관리가 프로그래머에게 주어진 C/C++에서 발생한다. core dump는 메모리가 .. 2021. 7. 5.
스레드와 C언어 스레드 pthread 스레드 개념 스레드는 fork 함수가 하는 것처럼 자식 프로세스처럼 역할을 하지만 경량화된 형태이다. 새로운 프로세스에 비해 적은 비용으로 생성과 관리가 가능하다. 스레드는 하나의 실행 흐름을 말하며 환경에 따라 여러 스레드를 동시에 실행이 가능하다. 하나의 프로세스에서 여러 개의 스레드가 서로 자원과 메모리를 공유하여 작동한다 스레드 관리 스레드를 누가 관리하느냐에 따라서 이를 나눌 수 있다. 큰 차이가 없어 보이나 그 방식과 원리에서 보면 큰 차이가 있다. 사용자 수준의 스레드 커널 밖에서 구현된 스레드로 같은 메모리에서 스레드가 생성 및 관리되어 속도가 빠르다. 그러나 하나의 스레드가 시스템 호출이나 장애 등으로 중단이 되면 나머지 모두도 중단이 된다. 브라우저를 사용하다 하나의 탭이 멈추면 나머지.. 2021. 6. 19.
C++ STL map 컨테이너 map map 컨테이너는 key와 value를 쌍으로 갖는 연관 컨테이너이다. 연관 컨테이너 중 활용도가 높아 많이 쓰인다. 파이썬의 딕셔너리와 유사하다. key는 중복이 될 수 없으며 value는 가능하다. key 중복을 허용하려면 multimap 컨테이너를 사용해야 한다. map의 원소는 pair 객체로 저장된다. 생성자 map m: 빈 m 생성 map m : p 조건자로 정렬한 빈 m생성 멤버 함수 size() : 컨테이너의 원소 개수 count(x) : 원소 x의 개수 반환 begin() : 처음을 가리키는 반복자 반환 rbegin() : 처음을 가리키는 역순차열의 반복자 반환 end() : 마지막을 가리키는 반복자 반환 rend() : 마지막을 가리키는 역순차열의 반복자 반환 clear() : .. 2021. 6. 9.
C++ STL Set 컨테이너,멤버 함수 사용 SET 컨테이너 집합의 의미로 쓰이는 set은 중복 요소가 없으며 균형 이진트리로 구현된 연관형 컨테이너이다. 원소들의 집합으로 되어 있다. Set도 매우 유용하지만 set보다는 보통 multi set을 사용할 때가 더 많았다. set은 절대 중복 원소가 없어야 할 경우에만 사용한다. 생성자 set s : 빈 set 생성 set s : p 조건자로 정렬한 빈 s생성 멤버 함수 size() : s의 원소 개수 count(x) : 원소 x의 개수 반환 begin() : 처음을 가리키는 반복자 반환 rbegin() : 처음을 가리키는 역순차열의 반복자 반환 end() : 마지막을 가리키는 반복자 반환 rend() : 마지막을 가리키는 역순차열의 반복자 반환 clear() : 모은 요소 제거 empty() : .. 2021. 6. 5.
반응형