카테고리 없음

21. 구조체와 메모리 활용하기(memset , memcpy)

The Way I Am 2019. 1. 30. 16:24
반응형

1. 메모리 함수를 사용하여 구조체와 메모리에 값을 설정하는 방법. (memset)

 

memset을 이용해 malloc 함수로 할당된 동적 메모리에 값을 0으로 설정합니다.

 

 

memset(&p1, 0, sizeof(struct Point2D));    // p1을 구조체 크기만큼 0으로 설정

 

memset 함수로 메모리에 값을 설정할 때는 포인터를 그대로 넣어줍니다.

 

왜냐하면 포인터는 안에 메모리 주소를 담고 있으므로 &를 사용하지 않아도 됩니다.

 

변수의 메모리 주소를 구해서 넣어줍니다. 그리고 설정할 값과 크기를 넣어줍니다.

 

 

여기서는 구조체의 내용을 모두 0으로 설정했고, Point2D 구조체 크기만큼 값을 설정했습니다.

 

printf 함수로 p1의 각 멤버를 출력해보면 모두 0이 나옵니다.

 

 

 

 

2. 메모리 함수를 사용하여 구조체와 메모리의 내용을 복사하는 방법(memcpy)

 

매번 내용이 같은 구조체를 만들려면 상당히 번거롭습니다.

 

또는 이미 생성하여 값을 저장한 구조체나 메모리를 다른 곳에 복사할 경우가 자주 있습니다.

 

이때는 memcpy 함수를 사용하여 메모리의 내용을 다른 곳으로 복사할 수 있으며

 

함수 이름은 memory copy에서 따왔습니다(string.h 헤더 파일에 선언되어 있습니다).

 

 

 

 

 

출처) https://dojang.io/mod/page/view.php?id=438

반응형