[memset 함수] memset 함수 주의점

2024. 4. 26. 22:29자료구조 및 알고리즘/C++ 코딩테스트 스킬

728x90

memset 함수 사용 시, 주의점

일단 결론부터 말하자면 memset 함수로 초기화 가능한 값은 0, -1, 10101010 01010101과 같이 8bit씩 규칙적으로 잘려지는 수들 뿐인다. 나는 이것도 모르고 memset함수로 배열 전체를 100000을 초기화 시키려다가 낭패를 봤다.

 

memset함수는 1byte씩 초기화 시킨다. 이 때문에 0을 뜻하는 00000000 -1을 뜻하는 11111111은 온전히 초기화가 되는 것이다. 

 

우리가 1을 초기화 한다고 가정한다면 4byte 초기화 된 00000001의 값을 기대할 것이다. 하지만 memset 함수는 01010101로 초기화 시켜버린다.

 

나는 항상 memset함수가 for문보다 빠르다고 생각해서 사용해 왔었다. 하지만 이 둘의 성능 이슈 차이는 거의 없다고 한다. 오히려 4byte씩 초기화 시키는 for문이 더 빠르다고 한다.

 

 

 

 

출처 https://dongkyun-jang.tistory.com/21

 

memset 함수

https://minusi.tistory.com/entry/memset-%EC%82%AC%EC%9A%A9%EC%8B%9C-%EC%A3%BC%EC%9D%98%ED%95%A0-%EC%A0%90 memset 사용시 주의할 점 C 또는 C++ 언어에서, 구조체 또는 배열을 초기화할 때 memset 함수를 사용하는 것을 종종 볼

dongkyun-jang.tistory.com

 

https://minusi.tistory.com/entry/memset-%EC%82%AC%EC%9A%A9%EC%8B%9C-%EC%A3%BC%EC%9D%98%ED%95%A0-%EC%A0%90

 

memset 사용시 주의할 점

C 또는 C++ 언어에서, 구조체 또는 배열을 초기화할 때 memset 함수를 사용하는 것을 종종 볼 수 있습니다. #ifdef CPP // C++에서는 cstring 헤더를 사용합니다(string.h 를 사용해도 됩니다) #include #elif #inclu

minusi.tistory.com

 

 

728x90