본문 바로가기
dev

C언어 memset bzero 비교

by 공뭉 2020. 4. 22.
반응형

유지보수를 하다보면 bzero로 초기화 되어있을때와 memset으로 초기화 되어있을때를 자주보게된다.
두 함수에 무슨 차이가 있길래 혼합되어 쓰였을까?
엄밀히 말하자면 bzero는 비표준이므로 사용하지 않는것을 권장하지만 구시대의 많은 개발자들이 bzero를 사용한 것으로 관찰된다.

void bzero (void *block, size_t size)
- byte 스트링을 size만큼 0으로 채운다.
- memset과 마찬가지로 메모리를 초기화하기위한 목적으로 주로 사용되었다.
- BSD계열 UNIX에서 만들어진 함수로써.. memset의 비효율적인 대안이다.
- 저장할 수 있는 유일한 값은 0이므로 memset만큼 일반적이지 않다.

void * memset (void *block, int value, size_t size)
- c언어 표준함수로 block을 size만큼 value 값으로 채우고 block의 주소를 반환한다.
- value는 unsigned char로 변환된다.
- bzero는 0으로만 채워지지만 memset은 value를 지정하여 원하는 값으로 메모리를 채울 수 있다.

ex)
memset(flag, 0x00, sizeof(flag));

반응형

'dev' 카테고리의 다른 글

C언어 개발툴 Dev C++  (0) 2020.05.16
C언어 sprintf  (0) 2020.04.25
[JAVA] 로또 코딩  (0) 2020.02.02
[JAVA] java 설치 및 eclipse 설치  (0) 2019.12.29
[JAVA] 프로그램 기초 지식 및 JAVA 소개  (0) 2019.12.29

댓글