_msize와 sizeof



언제나 내가 처음부터 짠 프로그램 보다는 중간에 넘겨 받아서 손대야 하는 경우가 많다.
(처음부터 내가 다 짤 엄두도 안나고 ㅠ.ㅠ)
이번에는 32비트로 되어 있는 코드를 가지고 놀다가,
재미난 부분을 발견했다.

for (int i = 0; i < _msize(data) / sizeof(data[0]); i++) {
~~~~
}

내용인 즉슨, data라는 어레이의 갯수만큼 루프를 돌리겠다..였다.
분명 cpp인데....
vector나 다른 자료형을 안쓰고 뭐..
그냥 뒀다.
(이게 화근이지..고치고 싶을 때 고쳐야한다..뭐든지..)

시간이 흘러서 64비트로 변환해야하는 문제가 발생했다.
런타임 에러가 발생했고,
찾다찾다 보니 저기에서 에러가 나오는 것이었다.

뭐지..왜지..
저기만 들어갔다 나오면 안에 내용이 일치하지 않는 것이다.
으음..
둘다 사이즈 가지고 오는 걸텐데 왜..? (가정 자체가 틀린거지;; )

신기하게도,
data는 int *로 선언되어서 
sizeof(data[0])는 32비트에서는 4, 64비트에서는 8을 뿜는다.

근데..
_msize(data)는 둘다 동일하게 80을 뿜는다..-_- 이러니 제대로 돌리 없지.
_msize()에 대해 찾아보면 이유야 알겠지만, 우선 이 함수 자체가 짜증이 나서 찾아보니,
ansi 표준이 아니란다. 생김새에서 알 수 있듯...

더 이상 안찾아!
안써!!

vector로 바꿨다. 
왜 이 쉬운 것을 안바꿔서 뒤에 고생했을까,
내 자신을 자책하는 하루였다.
흑흑..

아직 멀었어..
아직..