본문 바로가기

C++

[C++] memset으로 배열 초기화 시 0,-1으로만 초기화 가능

memset은 배열을 초기화할 때 자주 사용하는 함수이다.

그런데 0이나 -1이 아닌 다른 숫자로 초기화를 하면 엉뚱한 값으로 채워진다.

왜냐하면 memset은 value값을 unsigned char로 바꿔서 다루기 때문에 우리가 의도했던 것과 달라진다.

출처: https://coding-factory.tistory.com/673

memset(arr,1,sizeof(arr))로 1로 초기화하려 했지만 int가 아닌 unsigend char로 바꿔서

1바이트마다 1이 들어가기 때문에 전혀 다른 값으로 채워진다.

0,-1이 아닌 특정 값으로 배열을 채우고 싶다면 std::fill이나 std::fill_n을 사용하자.