Microsoft MVP성태의 닷넷 이야기
List<int>에 대한 이해가 잘안됩니다. [링크 복사], [링크+제목 복사],
조회: 17141
글쓴 사람
하주형
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

시작하세요 C#을 공부중입니다.


값형식을 object형식에 대입할때 박싱이 일어나서 결국 값형식의 데이터가

힙에 할당되서 GC에게 더 일을 시키게 되므로 박싱은 최대한 줄여야된다고 이해했는데요..


ArrayList의 단점은 모든 항목들을 object형식으로 받아들이기 때문에 값형식을 추가할때에는 박싱이 발생하게되어서

값형식도 힙영역에 할당되는 단점이 있고 그러한 단점을 해결하기위해 List<T> 타입을 이용한다고 책에서 배웠습니다.



근데 결국 List<int> 타입도 동적배열을 관리하기위해서 내부적으로 배열을 힙에 생성해서 값을 대입하고 ArrayList와 마찬가지로 값형식이 힙에 할당된다는건 변함이없는데

ArrayList의 단점을 List<Int>로 완화시킬수있다는 설명이 이해가 잘안됩니다. 결국 둘다 값형식을 힙에 할당되는 형태로되니 성능상의 이점은 똑같은거 아닌가요?


[연관 글]






[최초 등록일: ]
[최종 수정일: 1/25/2019]


비밀번호

댓글 작성자
 



2019-01-26 08시34분
List<int>로 하면 int를 담을 수 있는 배열이 생성됩니다. 반면, ArrayList는 object를 담을 수 있는 배열이 생성됩니다.

따라서, int 배열에는 int가 그대로 들어가지만 object 배열에는 int가 곧바로 들어가지 못합니다. 그 int는 heap에 새롭게 할당한 후 그렇게 할당된 object 객체를 ArrayList가 소유한 배열에서 보관하게 됩니다. 그래도 의문이 안 풀리면 다시 질문을 해주세요.
정성태
2019-01-26 09시58분
[하주형] 그럼 List나 ArrayList나 데이터가 힙에 할당되는건 똑같으니 힙에 데이터가 쌓이는건 똑같고 다만 박싱/언박싱하는 과정자체에 오버헤드가 있으니 이러한 과정을 줄여주기위해서 List<int>를 쓴다고 이해하면 될까요?
[guest]
2019-01-28 10시46분
일단은 그렇게 이해해주시고... ^^ 오늘 퇴근 후에 이에 관해서 자세하게 글을 써 두겠습니다. 그 글을 참고하세요. (아마 생각하시는 것과 약간 다를 것입니다.)
정성태
2019-01-28 08시36분
아래의 글을 보시고,

C# - int []와 object []의 차이로 이해하는 제네릭의 필요성
; http://www.sysnet.pe.kr/2/0/11805

혹시 이해가 안 되는 것이 더 있다면 다시 질문하세요.
정성태
2019-01-28 09시35분
[하주형] 결국 ArrayList와 같은 object배열은 정확히 어떤크기로 배열을 잡을지 몰라서 이중포인터 형식으로 내부적으로 작동했던거군요 그래서 제네릭을 도입함으로써 이러한 문제를 해결했던거네요. 정말감사합니다 궁금증이 풀렸어요
[guest]

... 46  47  48  49  50  51  52  53  54  [55]  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
1311김솔8/18/201419927nsis파일 수정중에요! [2]
1310조정용8/17/201421301WCF 프로그램에서 Task를 이용한 백그라운드 작업 시 클라이언트에 대한 병목현상. [4]파일 다운로드1
1309서동원8/12/201419147안녕하세요. embeded dll과 관련하여 질문드립니다. [4]
1308김솔8/11/201423302리스트뷰에서 중복파일체크를 하고싶습니다. [3]
1306이상현8/7/201416800Entity 프레임웍에서 테이블만 추가로 등록하는 방법
1307이상현8/7/201417508    답변글 [답변]: 자답이네요. [1]
1305popo8/7/201418513wpf UserControl List 바인딩 질문 입니다. [1]
1304민경수8/7/201421608네이버 카페에 구글 스프레드 시트 삽입 [1]
1303김동진8/7/201418657vmware환경에서 Guest IP를 192대역으로 받을 수 있는 방법은 없을까요~? [3]
1302김문경7/31/201417615스마트클라이언트 오라클 연결 [1]
1314이재균8/20/201417290    답변글 [답변]: 스마트클라이언트 오라클 연결
1300아로스7/28/201431434c# 인터넷 임시 파일 삭제 문의 [12]파일 다운로드1
1299서동원7/28/201419846안녕하세요. 혹시 Internet_Zone과 관련된문제인가 해서 질문드립니다. [1]
1298(non...7/25/201425908(글쓴이의 요청으로 삭제합니다.) [15]
1295서동원7/22/201420690안녕하세요. 스마트클라이언트에 대해 질문드립니다. [2]파일 다운로드1
1294(non...7/20/201418968(글쓴이의 요청으로 삭제합니다.) [2]
1293VS20...7/20/201421244VS2013 Ultimate에 Windows Phone 프로젝트 템플릿 추가 방법 문의 [1]파일 다운로드2
1292(non...7/20/201417609(글쓴이의 요청으로 삭제합니다.) [2]
1291zino7/16/201419820chromium 배포본 만들기~ [1]
1290(non...7/13/201420551(글쓴이의 요청으로 삭제합니다.) [3]
1288박주만7/8/201429819C# 서비스 기반 데이터베이스(mdf) & InstallShield Limited Edition 설치 및 배포 [2]파일 다운로드1
1287김용환7/8/201427757오라클 db 사용관련 문의입니다. [4]파일 다운로드1
1286C#조으다7/8/201417877WebBrowser 공유기 관리 웹 페이지 인증 [3]
1285C#조으다7/5/201418189IE DocumentComplete 이벤트가 발생되지 않습니다. [2]
1284(non...7/4/201418544(글쓴이의 요청으로 삭제합니다.) [3]
1283김영대7/3/201421343안녕하십니까 정성태님 죄송하지만 SmartClient 에 관한 질문이 있습니다. [9]
... 46  47  48  49  50  51  52  53  54  [55]  56  57  58  59  60  ...