2017-11-28 1 views
0

큰 배열을 사용할 때 파이썬은 C와 달리 메모리를 기본값으로 할당합니까?Python : 배열 생성이 메모리를 자동으로 할당합니까?

더 구체적으로 말해서 array=[1,2,3] 명령을 사용할 때이 모든 배열을 자유롭게 만드는데 걱정해야합니까?

웹상에서 답변을 찾고있는 것이 더 혼란 스럽습니다.

+0

파이썬은 가비지 수집됩니다. 메모리를 수동으로 해제 할 필요는 없습니다. – user2357112

+2

파이썬에는 자동 메모리 관리 기능이 있습니다. C보다 더 높은 수준의 언어입니다. 또한 배열이 아닌 * 목록입니다. –

+0

파이썬은 가비지 수집됩니다. 즉, 객체에 대한 포인터가 없어지면 (즉, ref 카운터가 0으로 떨어지면) 메모리가 해제됩니다. 더 많은 메모리를 소비하는 변수가 더 이상 필요하지 않으면 메모리를 "비울 수 있습니다". 'del my_variable_name'을 통해 간단히 삭제할 수 있습니다. 후드 아래에서 더 복잡합니다. 예를 들어 항목을 목록에 추가 할 때마다 개체를 다시 복사 할 필요가 없도록 메모리가 미리 할당됩니다. 그러나 임계 값을 초과하면 더 많은 메모리 (예 : 20 %)를 할당하고이 새로운 메모리 블록에 개체를 다시 복사합니다. – Alexander

답변

1

array=[1,2,3]은 배열이 아니라 목록입니다. 동적으로 할당 (자동으로 크기 조정)되며 메모리를 확보 할 필요가 없습니다.

표준 라이브러리의 array 모듈의 배열과 numpy 라이브러리의 배열에도 동일하게 적용됩니다.

일반적으로 python은 모든 객체에 대해 메모리 할당과 메모리 해제를 처리합니다. 아마, cython을 사용하여 생성되거나 c 모듈을 직접 호출하는 일부 객체는 예외입니다.

+1

그리고, 잘 * 모든 개체 *. –

+1

네, 좋은 지적입니다; 나는 당신이 논평 할 때 편집을 타자를 치고 있었다. 고맙습니다. –

관련 문제