작성
·
55
0
데이터 양이 많지 않으나 데이터 간의 간격이 큰 경우에 데이터 값을 인덱스로 사용하면 Memory Exception이 발생한다고 했는데, 이 말은 인덱스로 사용된 값들이 차이가 커서 결국 배열이 쓸데없이 커지므로 제한된 메모리를 초과할 가능성이 많다는 의미인가요??
즉, 1, 10000 이란 값이 있을때에 이 값들을 인덱스로 쓰면 10000 요소를 가진 배열로 만들어 지지만, 유효한 값은 단 2개( 1과 10000의 인덱스가 가리키는 요소 )만이 들어있게 되고, 이 값의 차이가 크면 메모리에 담을 수 없을 만큼의 크기로 커진다는 의미이므로 피해야 한다는 말로 이해가 됩니다만..
그리고, 구조체를 사용하라는 말의 의미가 값을 하나의 구조체로 해서 연결 리스트로 연관 지으라는 의미로 받아들여도 되나요? 혹시 잘 못 알았다면 어떤 의미인지 설명해 주시면 감사하겠습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. Aozora님.
질문해주신 내용에 관해 간단히 설명드리겠습니다.
데이터 간의 간격이 큰 경우 메모리 사용:
맞습니다. 데이터 값의 간격(예: 1과 10000)이 큰 경우 이를 배열의 인덱스로 사용하면, 예를 들어 인덱스 1과 10000 위치에만 값을 저장하고 나머지 공간은 사용되지 않습니다. 이로 인해 배열은 불필요하게 커지게 되고, 이 경우 메모리 누수가 발생하여 메모리 한계를 초과할 수 있습니다. 그러므로 효율적이지 않은 사용을 피하는 것이 좋습니다.
구조체와 연결 리스트:
구조체를 사용하라는 조언은 데이터를 저장하는 다른 효율적인 방법을 제안한 것입니다. 특정 데이터 값들을 인덱스로 사용하여 배열을 생성하는 대신, 각 데이터를 구조체로 만들고 이를 연결 리스트로 활용하면 메모리를 더 효율적으로 사용할 수 있습니다. 즉, 필요한 데이터만 메모리에 저장하면서 동적 할당을 통해 메모리를 절약할 수 있습니다.
유사한 질문과 답변을 포함한 링크는 아래와 같습니다:
1. 데이터 간의 간격이 클 때 배열 사용에 대한 문제
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
자세한 설명 감사드립니다.