memset함수 주의할 점
Programming/C++_C#2016. 10. 26. 10:35
반응형
코딩을 하다가 어떤 DWORD*(동적배열)을 memset함수를 통해 값을 대입하려고 했는데 문제가 생겼다.
코드는 아래와 같다.
DWORD* pdwBuffer = NULL; pdwBuffer = new DWORD[100*100]; if( pdwBuffer ) memset( pdwBuffer, 12345678, 100 * 100 * sizeof(DWORD) ); |
근데 아무리 해도 pdwBuffer에 12345678의 값이 들어가지 않고 이상한 큰 값이 들어가는 것이였다.
잉 뭐지?라고 생각하고 memset함수를 찾아보았더니
2번째 인자값에 1바이트형의 범위가 넘어가는 수로는 초기화를 안된다는 것을 찾게 되었다.
위에 코드는 1바이트형보다 큰 숫자(12345678)를 넣으니까 오류가 생긴것이였다.
char형이나 unsigned char형으로 써야되는 것을 알게되었다.
그래서 직접 값을 대입해주었다.
DWORD* pTemp = NULL; pTemp = pdwBuffer; for( int i = 0; i < 100; ++i ) { for( int j = 0; j < 100; ++j ) { if( pTemp ) { *pTemp = 12345678; ++pTemp; } } } |
반응형
'Programming > C++_C#' 카테고리의 다른 글
[C++] 오버로딩함수 (0) | 2017.02.23 |
---|---|
fopen, fclose, fseek함수 (0) | 2017.02.23 |
[C++] 가변인자함수 (0) | 2017.02.14 |
[API] 윈도우 api 아이콘 바꾸기 (0) | 2016.11.15 |
자료형변환시 주의할 점 및 자료형 범위 (0) | 2016.10.14 |
댓글()