모두의 코드 커뮤니티

C++ new 동적할당 관련 질문드립니다

int N;
std::cin >> N;

int* input_arr = new int[N];
int* output_arr = new int[N];
memset(input_arr, 0, sizeof(input_arr));
memset(output_arr, 0, sizeof(output_arr));

int max_num = 0;

for (int i = 0; i < N; i++) {
	std::cin >> input_arr[i];
	if (input_arr[i] > max_num)
		max_num = input_arr[i];
}

int* counting_arr = new int[max_num+1];
memset(counting_arr, 0, sizeof(counting_arr));

for (int i = 0; i < N; i++) {
	counting_arr[input_arr[i]]++;
}

위 코드에서 counting_arr을 new로 할당했는데 이 배열속 값을 바꿀려고 했더니 주소값인지 쓰레기값인지가 나옵니다. 이럴때는 어떻게 해결해야 하나요?

좋아요 1

sizeof(input_arr) 은 input_arr 에 할당된 공간의 크기를 리턴하는 것이 아니라 그냥 포인터의 크기 (8) 을 리턴합니다.

원하는 작업을 하고 싶었다면 sizeof 대신에 sizeof(int) * N 을 했어야 합니다.

아앗…이렇게 해결하면 되군요 ㅎㅎ c부터 c++글까지 모두 잘 보고있습니다. 제 질문의 빠른 답변도 감사드립니다!

좋아요 1