Heim > Backend-Entwicklung > C#.Net-Tutorial > Einführung in die dynamische Speicherzuweisung und den Namespace in C++

Einführung in die dynamische Speicherzuweisung und den Namespace in C++

青灯夜游
Freigeben: 2019-03-28 13:15:16
nach vorne
2326 Leute haben es durchsucht

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.

1. Dynamische Speicherzuweisung in C++

● 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指向的是数组的首元素地址,释放的就是首元素的内存空间,其余元素的内存空间并没有释放,会造成内存泄漏
Nach dem Login kopieren
#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;
}
Nach dem Login kopieren

new Schlüsselwörter und mallocDer Unterschied zwischen Funktionen:

● Das Schlüsselwort new ist Teil von C++

● malloc ist eine von der C-Bibliothek bereitgestellte Funktion

● newAllocate Speicher in Einheiten bestimmter Typen

● mallocSpeicher in Einheiten von Bytes zuweisen

● newKann initialisiert werden, wenn eine einzelne Typvariable angewendet wird

● mallocVerfügt nicht über die Funktion der Speicherinitialisierung

newSchlüsselwortinitialisierung:

int*   pi = new int(1);
float* pf = new float(2.0f);
char*  pc = new char('c')l
Nach dem Login kopieren

2. Namespace in C++

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
    {
        /* ... */
    }
    /* ... */
}
Nach dem Login kopieren

Verwendung von Namespace

using namespace name;     // 使用整个命名空间
using name::variable;     // 使用命名空间中的变量
::variable;                // 使用默认命名空间中的变量
Nach dem Login kopieren
rrree

Namespace löst das Problem globaler Variablennamenskonflikte

3. Zusammenfassung

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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage