이 글은 주로 Java와 C++의 객체 배치 비교에 대한 관련 정보를 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
Java와 C++의 객체 배치 비교
요약:
Java에서는 모든 객체가 힙(일반 메모리 풀인 힙)에 저장되고 객체 참조는 스택(Stack)에 저장됩니다.
Equals()와 "=="를 사용하여 String이 직접 선언한 문자열과 new String이 선언한 문자열을 비교하면 객체와 참조 간의 관계와 저장 위치를 이해할 수 있습니다.
스택은 레지스터 다음으로 빠르고 효율적인 스토리지 할당 방법입니다. 프로그램을 생성할 때 Java 시스템은 스택 포인터를 위아래로 이동하기 위해 스택 내에 저장된 모든 항목의 정확한 수명을 알아야 합니다.
힙의 장점은 스택과 다릅니다. 컴파일러는 저장된 데이터가 힙에 얼마나 오래 남아 있는지 알 필요가 없습니다. 따라서 힙은 스택보다 더 유연합니다.
자바의 스택은 영어로는 모두 Stack이지만, 단순히 자료구조상의 스택으로 이해하기는 어렵습니다. Java의 스택은 범용 RAM(Random Access Memory)에 위치하지만 스택 포인터를 통해 프로세서에서 직접 지원합니다. 스택 포인터가 아래로 이동하면 새 메모리가 할당되고, 위로 이동하면 해당 메모리가 해제됩니다.
구체적인 Java 메모리 할당에 대해서는 "Thinking in Java"의 P22페이지를 참조하세요.
C++: new 및 malloc 키워드를 사용하여 선언된 개체가 힙에 저장되어 있는 한, malloc 키워드도 힙 메모리에서 작동합니다.
A a(1);//栈中分配 A b = A(1);//栈中分配 A *c = new A(1);//堆中分配内存空间,将在堆中所创建的对象存储地址赋值给c指针 A *d = (A*)malloc(sizeof(A));//堆中分配内存空间 delete c;
위 내용은 Java와 C++의 객체 배치 배열 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!