C++关于new动态分配内存的问题?

img


为什么没有值呢?new的动态内存 没有释放的情况下,不是可以被其他函数给使用里面的数据吗?
里面的数据呢?

img

变量名和函数名不支持中文,命名不规范,改成英文名字
而且你没有给变量赋值。函数1中的 数组指针[300]={0}这一句是错误的,数组越界了,数组指针这个变量最大到299。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7781716
  • 这篇博客你也可以参考下:C++编程之new的用法以及其代码书写格式
  • 除此之外, 这篇博客: C++基础知识中的 虚函数表是针对类的还是针对对象的?同一个类的两个对象的虚函数表是怎么维护的? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 编译器为每一个类维护一个虚函数表,每个对象的首地址保存着该虚函数表的指针,同一个类的不同对象实际上指向同一张虚函数表。

  • 您还可以看一下 夏曹俊老师的C++微服务架构及安全云盘项目实训课程中的 完成了客户端的文件上传指令处理小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题解答:

    在C++中,使用new关键字进行动态内存分配并初始化时,需要手动释放内存,否则会导致内存泄漏。可能导致其他函数无法访问已分配内存中的数据的原因是,动态分配内存的指针指向的内存空间在堆上,而其他函数无法访问到堆上的内存。

    为了解决这个问题,您可以使用delete关键字释放用new动态分配的内存。delete会告诉操作系统当前内存不再使用,系统可以将其重新分配给其他程序使用。

    下面是一个示例代码,展示了如何使用new和delete来解决该问题:

    #include <iostream>
    using namespace std;
    
    int main() {
        int* ptr = new int; // 使用new关键字动态分配内存
        *ptr = 10; // 初始化分配的内存
        cout << "Value of ptr: " << *ptr << endl;
    
        delete ptr; // 释放内存
    
        return 0;
    }
    

    这段代码中,首先使用new关键字分配了一个int类型的内存,并将其地址赋值给指针ptr。然后通过ptr访问和修改了分配的内存中的数据。最后使用delete关键字释放了分配的内存。

    在真实的项目中,可能会有多处使用new动态分配内存的地方,每个地方都需要使用相应的delete释放内存。

    另外,尽量避免使用未初始化的指针或释放已释放的内存,这样可能会导致程序崩溃或其他不可预期的问题。为了确保内存的正确释放,建议在不需要使用某个指针时,将其置为NULL或nullptr,以避免悬空指针的问题。

    希望这个解答对您有帮助。如果您有任何更多的问题,请随时提问。