硬汉嵌入式论坛

 找回密码
 立即注册
查看: 828|回复: 4
收起左侧

求助关于keil5使用C++的语法问题。

[复制链接]

22

主题

66

回帖

132

积分

初级会员

积分
132
发表于 2023-8-10 08:33:19 | 显示全部楼层 |阅读模式
keil使用类:
class Student
{
    public:
        int c;
    void printfInfomation()
    {
        printf("yes\r\n");
    }

};
/* 为什么delete之后 还能运行出这个printf.函数 而且不报错呢? delete之后不是已经注销删除了吗? */
int main(void)
{
   Student *parr = new Student();
   parr->printfInfomation();
   delete(parr);
   parr->printfInfomation();
}

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2023-8-10 08:42:12 | 显示全部楼层
delete后,对应的动态内存值还没有被清空,所以暂时还能访问。
回复

使用道具 举报

22

主题

66

回帖

132

积分

初级会员

积分
132
 楼主| 发表于 2023-8-10 08:44:04 | 显示全部楼层
eric2013 发表于 2023-8-10 08:42
delete后,对应的动态内存值还没有被清空,所以暂时还能访问。

那请教一下硬汉哥 delete之后的什么时候会清空呀  这个是可以预见的吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2023-8-10 08:59:10 | 显示全部楼层
2360985396 发表于 2023-8-10 08:44
那请教一下硬汉哥 delete之后的什么时候会清空呀  这个是可以预见的吗?

delecte不负责清空,没必要。像我们局部变量使用栈空间一样,退出函数后,这个空间的数据还在,但已经没有意义了,后续的栈再开辟使用,会继续使用这个。
回复

使用道具 举报

75

主题

684

回帖

909

积分

金牌会员

积分
909
发表于 2023-8-10 09:01:36 | 显示全部楼层
需要自己清空的,最好delete之后赋值为NULL。你这个算是使用野指针了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 11:27 , Processed in 0.168123 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表