Heim >Backend-Entwicklung >C#.Net-Tutorial >Einführung in die dynamische Speicherzuweisung und den Namespace in C++
Der Inhalt dieses Artikels ist die Einführung der dynamischen Speicherzuweisung und des Namensraums in C++. Ich hoffe, dass er für Freunde hilfreich ist.
● Verwenden Sie das Schlüsselwort new
, um dynamischen Speicher zu beantragen
● Die dynamische Speicheranwendung in C++ basiert auf Typ
● delete
wird hauptsächlich zur Speicherfreigabe verwendet
Die C-Sprache unterstützt tatsächlich keine dynamische Speicherzuweisung, sondern erfolgt über die malloc
-Bibliotheksfunktion Um dies zu erreichen, unterstützt einige Hardware möglicherweise überhaupt kein malloc
, während C++ new
ein Schlüsselwort ist und die dynamische Speicherzuweisung auf jedem Compiler und jeder Hardwareplattform durchgeführt werden kann.
malloc
basiert auf Bytes für die dynamische Speicherzuweisung, new
basiert auf dem Typ für die dynamische Speicherzuweisung,
// 变量申请: 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
Schlüsselwörter und malloc
Der Unterschied zwischen Funktionen:
● Das Schlüsselwort new
ist Teil von C++
● malloc
ist eine von der C-Bibliothek bereitgestellte Funktion
● new
Allocate Speicher in Einheiten bestimmter Typen
● malloc
Speicher in Einheiten von Bytes zuweisen
● new
Kann initialisiert werden, wenn eine einzelne Typvariable angewendet wird
● malloc
Verfügt nicht über die Funktion der Speicherinitialisierung
new
Schlüsselwortinitialisierung:
int* pi = new int(1); float* pf = new float(2.0f); char* pc = new char('c')l
Es gibt nur einen globaler Bereich in der Sprache C
● Alle globalen Bezeichner in der Sprache C haben denselben Bereich
● Es kann zu Konflikten zwischen Bezeichnern kommen
Das Konzept des Namespace wird in C++ vorgeschlagen
● Namespace unterteilt den globalen Geltungsbereich in verschiedene Teile
● Bezeichner in verschiedenen Namespaces können ohne Konflikt denselben Namen haben
●Namespaces können ineinander verschachtelt werden
●Globaler Bereich wird auch als Standard-Namespace bezeichnet
Definition:
namespace Name { namespace Internal { /* ... */ } /* ... */ }
Verwendung von Namespace
using namespace name; // 使用整个命名空间 using name::variable; // 使用命名空间中的变量 ::variable; // 使用默认命名空间中的变量rrree
Namespace löst das Problem globaler Variablennamenskonflikte
C++ verfügt über integrierte spezielle Schlüsselwörter für die dynamische Speicherzuweisung
Die dynamische Speicherzuweisung in C++ kann gleichzeitig initialisiert werden
Die dynamische Speicherzuweisung in C++ basiert auf Typen
Das Namespace-Konzept in C++ wird zur Lösung von Namenskonfliktproblemen verwendet
Empfohlene verwandte Video-Tutorials: „C++ Tutorial"
Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Lernen aller hilfreich sein wird. Weitere spannende Inhalte finden Sie in den entsprechenden Tutorial-Kolumnen auf der chinesischen PHP-Website! ! !
Das obige ist der detaillierte Inhalt vonEinführung in die dynamische Speicherzuweisung und den Namespace in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!