C++メモリ管理と注意事項

1680 ワード

メモリは、オペレーティングシステムによって割り当てられ、管理されるプログラムの実行に不可欠なリソースです.プログラマーとして、私たちは通常申請と返却しかできません.本文は主にC++メモリの申請と解放(返却)と注意事項を紹介する.
1メモリを要求および解放する演算子
申請new
リリースdelete
2メソッド
申請メモリ:
int *p = new int;
//       ,   new      

メモリを解放:
delete p;

ブロックメモリの申請と解放:
//  
int *arr = new int[10];

//  
delete []arr;  

3注意事項
3.1セット使用
c言語でのメモリの申請と解放はmallocとfreeが完了したことを知っています.
//  
void *malloc(size_t size);

//  
void free(void *memblock);

しかしC++ではnewとdeleteが使われています.C言語で申請する場合は、C言語で釈放しなければなりません.C++で申請するには、C++で釈放しなければなりません.組み合わせて使う.コンパイルできません.
3.2メモリは申請に失敗する可能性があり、異常処理が必要である
int *p = new int[1000];
if (NULL == p)
{
    //      
}

3.3メモリを解放するにはポインタを空にする必要がある
int *p = new int[1000];
if (NULL == p)
{
    //      
    //    
}
delete []p;  //  
p = NULL;

メモリを解放するだけでなく、ポインタを空にしなければなりません.ポインタが以前のメモリを指している場合、delete[]pが誤って実行された場合.操作すると、同じメモリが2回繰り返し回収され、重大なエラーが発生します.
4 Demo
#include 
#include 
using namespace std;

int main(void)
{
    //     100 char     
    char *str = new char[100];
    //  Hello C++             
	strcpy(str, "Hello C++");
    
    //     
    cout << str << endl;

    //    
	delete []str;
    str = NULL;

	return 0;
}