집 >백엔드 개발 >C#.Net 튜토리얼 >C++의 동적 메모리 할당 및 네임스페이스 소개
이 글의 내용은 C++의 동적 메모리 할당과 네임스페이스를 소개하는 것입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
● new
키워드를 통해 동적 메모리 애플리케이션용 new
关键字进行动态内存申请
● C++中的动态内存申请时基于类型进行的
● delete
关键用于内存释放
C语言其实是不支持动态内存分配的,是通过malloc
库函数来实现的,可能有一些硬件根本不支持malloc
;而C++ new
是一个关键字,不管在任意编译器上,任意硬件平台上都是能够进行动态内存分配的,这是本质区别。
malloc
是基于字节来进行动态内存分配的,new
则是基于类型来进行动态内存分配
// 变量申请: Type * pointer = new Type; // 从堆空间获取一个新的Type类型的空间 // 使用和C语言一样 delete pointer; // 这里指的是pointer所指向的那个元素的内存空间被释放 // 数组申请: Type * pointer = new Type[N]; // N指数组大小,数组元素个数,并非字节数 // delete[] pointer; // 数组的释放,需要在delete后面加[],和变量有区别 // delete[] 说明所要释放的指针是指向一片数组空间的,释放整个数组空间,如果用delete的话,pointer指向的是数组的首元素地址,释放的就是首元素的内存空间,其余元素的内存空间并没有释放,会造成内存泄漏
#include <stdio.h> int main() { int* p = new int; *p = 5; *p = *p + 10; printf("p = %p\n", p); printf("*p = %d\n", *p); delete p; // 指释放单个变量 p = new int[10]; // p指向一片数组空间, // p所指向的内存空间,至少占用了40个字节,保证够用,可能分配得更多 for(int i=0; i<10; i++) { p[i] = i + 1; printf("p[%d] = %d\n", i, p[i]); } delete[] p; // 释放数组 return 0; }
new
关键字与malloc
函数的区别:
● new
关键字是C++的一部分
● malloc
是由C库提供的函数
● new
以具体的类型为单位进行内存分配
● malloc
以字节为单位进行内存分配
● new
在申请单个类型变量时可以进行初始化
● malloc
不具备内存初始化的特性
new
delete
키가 사용됩니다#🎜 🎜 #C 언어는 실제로 동적 메모리 할당을 지원하지 않습니다. 이는 malloc
라이브러리 함수를 통해 구현됩니다. 일부 하드웨어에서는 이를 전혀 지원하지 않을 수 있습니다.malloc; 및 C++ new
는 모든 컴파일러 및 하드웨어 플랫폼에서 수행될 수 있는 키워드입니다.
malloc
은 동적 메모리 할당을 위한 바이트를 기반으로 하고, new
는 동적 메모리 할당을 위한 유형을 기반으로 합니다.
int* pi = new int(1); float* pf = new float(2.0f); char* pc = new char('c')l
namespace Name { namespace Internal { /* ... */ } /* ... */ }# 🎜🎜#
new
키워드와 malloc
함수의 차이점:
● new
키워드는 C++의 일부입니다
● malloc
는 C 라이브러리에서 제공하는 함수입니다
● new
타입 단위로 메모리 할당
● malloc
바이트 단위로 메모리 할당
● new
초기화 가능 단일형 변수 적용시 수행
● malloc
은 메모리 초기화 기능이 없습니다
new
키워드 초기화:
using namespace name; // 使用整个命名空间 using name::variable; // 使用命名空间中的变量 ::variable; // 使用默认命名空间中的变量2. C++의 네임스페이스
●전역 범위는 기본 네임스페이스라고도 합니다네임스페이스 개념은 C++에서 제안
● 네임스페이스 전역 범위를 여러 부분으로 나눕니다
● 서로 다른 네임스페이스의 식별자는 충돌 없이 동일한 이름을 가질 수 있습니다.
● 네임스페이스는 서로 중첩될 수 있습니다
#include <stdio.h> namespace First { int i = 0; } namespace Second { int i = 1; namespace Internal { struct P { int x; int y; }; } } int main() { using namespace First; using Second::Internal::P; printf("First::i = %d\n", i); printf("Second::i = %d\n", Second::i); P p = {2, 3}; printf("p.x = %d\n", p.x); printf("p.y = %d\n", p.y); return 0; }네임스페이스 사용
rrreeerrreee#🎜 🎜#네임스페이스는 전역 변수 명명 충돌 문제를 해결합니다.
#🎜🎜##🎜🎜#3. 요약#🎜🎜##🎜🎜##🎜🎜##🎜🎜#C++에는 동적 메모리 할당이 내장되어 있습니다. 전용 키워드 #🎜🎜##🎜🎜# C++의 동적 메모리 할당은 동시에 초기화 가능 #🎜🎜##🎜🎜#C++의 동적 메모리 할당은 유형 기반 #🎜🎜##🎜🎜#C++ 이름 충돌 문제를 해결하기 위해 네임스페이스 개념이 사용됩니다 #🎜 🎜##🎜🎜##🎜🎜# 추천 관련 동영상 튜토리얼: "#🎜🎜#C++Tutorial#🎜🎜#"#🎜🎜##🎜🎜#위 내용은 이 글의 전체 내용이길 바랍니다. 모든 사람의 공부에 도움이 될 것입니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 관련 튜토리얼 열을 주의 깊게 살펴보세요! ! ! #🎜🎜#위 내용은 C++의 동적 메모리 할당 및 네임스페이스 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!