C++-new动态变量申请 delete 删除动量地址

使用 int* pi = new int //申请动态变量, int* pi = new int(10) //直接进行申请

复制代码
/*
new动量申请
*/ 
#include <iostream>

using namespace std; 

int main() {
    int *pi = new int; 
    *pi = 10; 
    cout << *pi << endl; 
    delete pi; 
    pi = NULL; 

    int *pi2 = new int(20); 
    cout << *pi2 << endl;
    (*pi2)++;
    cout << *pi2 << endl; //21 
    delete pi2; 
    pi2 = NULL; 
}
复制代码

int* p_arr = new int[10]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} //申请动态数组 delete[] p_arr; 删除动态数组

复制代码
/*
使用new构造arr
*/
#include <iostream>

using namespace std; 

int main(void) {
    int* p_arr = new int[10]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
    for (int i = 0; i < 10; i++) {
        cout << *(p_arr + i) << endl; 
    }
    delete[] p_arr; 
    p_arr = NULL; 
    return 0;  

}
复制代码

对于int申请的地址,需要进行赋值以后,再进行删除,而对于动态变量数组计算机会自动分配一块内存,因此可以进行删除

复制代码
/*
delete 
*/ 

#include <iostream>

using namespace std; 

int main(void) {
    //int *pi; //需要进行赋值以后再进行删除 
    //delete pi; //容易变成野指针 

    int *pi2 = NULL; 
    delete pi2; //可以正常使用 
    

    int *pi3 = new int; 
    delete pi3; 
    pi3 = NULL; 
    //     
    //容易出现二级指针定义失误
    return 0;   
}
复制代码

 

posted @   c语言我的最爱  阅读(706)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示