배열값 같은 경우 애초에 넉넉하게 arr[65536] 이렇게 선언하는거보다
배열 길이에 맞게 동적할당 하면 좋은거같긴한데
int같은 정수도 동적할당 하는 게 좋냐?
예를들어 정수 변수가 1~42억까지 랜덤으로 변하는 수라고 하면 int라고 정적할당 하는거보다
그 숫자에 따라 short든 char이든 동적 할당 하는 게 나음?
근데 short, char보다 int가 메모리 크기는 커도 속도가 빨라서 좋다고 하던데
어떤게 가장 이상적인 방법이냐 정적할당이나 동적할당이나
일단 코드는 엄청 길음 몇만줄정도 됨..
1. 필요한 메모리는 컴파일 타임에 항상 알 수 있는게 아님. 아침엔 애기 100만명, 저녁엔 어른 100만명이 오는데 200만명 메모리를 항상 유지해야 할까? 지금은 1명 있는데?
2. 스택에 할당한 지역 변수는 콜스택이 풀리면(함수가 끝나면) 유효하지 않음. 스코프 이야기는 일단 생략
정수도 동적할당 하는 게 좋은거지? 근데 대부분 코드 보면 다 int a = 0; 이런식으로 정적할당하던데 그건 그냥 귀찮아서 그런거임?
3. 스택은 무제한이 아님. 컴파일 옵션으로 무제한으로 변경할 순 있지만 os 제한에 걸려서 문제가 생김
2번 같은 경우는 그럼 정적 할당해도 해당 함수가 끝나면 없어지기 때문에 메모리 부담 안가는 거 아님? 그럼 정적할당이 더 나은거아닌가
3. 힙은 기본적으로는 스택보다 할당, 해제가 느림. os에서 허락 맡고 받아와야 하니까
스택, 힙 쓸데없이 두개가 있는게 아니라 장단점이 나뉘기 때문에 둘 다 쓰는거임 ㅇㅅㅇ
그럼 그냥 메모리 부담 상관안하고 속도 빠르게 하고싶다 하면 정적할당이고 속도가 느리든 메모리 자원 아껴쓰고 싶다 하면 동적할당 쓰는 게 낫다는거네
근데 배열 같은경우에는 동적할당이 나음? 받아오는 배열이 몇글자인지 모를때 그냥 arr[65536] 이렇게 하는거보다 이거는 동적할당 하는 게 나음?
그럼 결론은 웬만하면 정수는 정적할당이고 배열은 동적할당이 좋구만
해당 댓글은 삭제되었습니다.
할당, 해제 속도가 느려서 그런거지?