账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    C++ 在一个循环中使用new,如何对应进行delete?
    • 纯天然无毒无添加防腐剂2020-01-01 00:00
    31
    0

    题目描述

    下面代码中创建链表时的循环中使用了new,如何设置对应的delete释放内存?
    PS.代码中自己的delete位置好像不对,也搜到过说小程序delete不delete不影响这种说法。求教大神!

    相关代码

    //链表测试
    #include <iostream>
    #include <stdlib.h> 
    
    struct Node {
    public:
        int data;
        Node *pNext;
    };
    
    //
    int main()
    {
        //头结点
        Node *head;
        head = new Node;
        head->data = 0;
        head->pNext = NULL;
        //创建链表
        Node *pnew, *ptemp;
        ptemp = head;
        int n = 0;
        std::cout << "请输入需要创建单向链表的结点个数:";
        std::cin >> n;
        int i = n;
        while (n > 0) {
            n--;
            pnew = new Node;
            std::cout << "输入第" << i - n << "个结点值:";
            std::cin >> pnew->data;
            pnew->pNext = NULL;
            ptemp->pNext = pnew; 
            ptemp = pnew;
        }
        //打印链表 
        std::cout << "打印链表值如下:";
        Node *p = head->pNext; 
        while (p != NULL) {
            std::cout << p->data << " ";
            p = p->pNext;
        }
        std::cout << std::endl;
        delete head;
        delete pnew;
        return 0; 
    }
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 无期过往ヘ 普通会员 1楼

      在C++中,你可以使用delete操作符来释放动态分配的内存。但是,这必须在每次循环结束时都进行。

      例如,你可能有一个动态分配的数组,你可以使用new来分配内存,然后使用delete来释放内存。这样,当循环结束时,你就会释放所有分配的内存。

      cpp int* arr = new int[10]; //分配10个整数 for(int i=0; i<10; i++) { arr[i] = i+1; } delete[] arr; //释放内存

      注意,这可能会导致未初始化的内存泄漏,如果你在循环中忘记删除动态分配的内存。为了避免这种问题,你可以在每次分配内存后立即删除它。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部