배열의 원소의 갯수를 알고 싶을때...
글쓴이: 시렌 / 작성시간: 토, 2004/11/06 - 4:00오후
int size = 46 + 2 * 44100 * 2 * 98 / 8;
int* wav = (int *)malloc(size*sizeof(int));
printf("%d" , sizeof(wav) / sizeof(int));
로 하면 값이 1이 나옵니다.
포인터가 배열의 첫번째 원소를 가리키기 때문에 저렇게 하면 배열의 첫번째 원소의 크기에 int의 크기를 나누니깐 결국 첫번째 원소의 갯수만을 리턴하는건데..
그럼 배열 전체의 원소의 갯수를 알고 싶다면 어떻게 해야할까요?
Forums:
int array[1024]; int size = sizeof(
int array[1024];
int size = sizeof( array ) / sizeof( array[0] );
보통 매크로를 만들어서 많이들 사용하시더군요.
그럼..제가 올린 코드에서배열 전체의 원소의 갯수를 구하는 것은
그럼..
제가 올린 코드에서
배열 전체의 원소의 갯수를 구하는 것은 불가능한가요?
코드를 안고치구요..
욱... 시렌님이 제시하신 예제는 배열이 아닙니다. 시렌님 손에 할당받은
욱... 시렌님이 제시하신 예제는 배열이 아닙니다. 시렌님 손에 할당받은 크기가 있지 않습니까? 그러면 그 크기에서 해당 요소 하나의 크기를 나누시면 될텐데요?
size / sizeof( int ) 하시면 되지 않습니까....
메모리를 할당 받은 크기를 얻는 이식가능한 방법은 없습니다. 알려고 해서도 안되고요... -_-; 할당 받을 때 크기를 가지고 있었다면 그걸 이용하는 수밖에는...
참고로.. sizeof(wav) == sizeof(int) == 4입니다
참고로.. sizeof(wav) == sizeof(int) == 4입니다.
sizeof(wav)는 wav로 할당된 크기가 아니라 int pointer크기죠.
댓글 달기