반응형
유지보수를 하다보면 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 |
댓글