别看free 和 delete 的名字恶狠狠的(尤其是 delete),它们只是把指针所指的内存给 释放掉,但并没有把指针本身干掉。 发现指针 p 被 free 以后其地址仍然不变(非 NULL),只是 该地址对应的内存是垃圾,p 成了“野指针”。如果此时不把 p 设置为 NULL,会让人误 以为 p 是个合法的指针。 如果程序比较长,我们...
别看free 和 delete 的名字恶狠狠的(尤其是 delete),它们只是把指针所指的内存给 释放掉,但并没有把指针本身干掉。 发现指针 p 被 free 以后其地址仍然不变(非 NULL),只是 该地址对应的内存是垃圾,p 成了“野指针”。如果此时不把 p 设置为 NULL,会让人误 以为 p 是个合法的指针。 如果程序比较长,我们...
首先free对应的是malloc;delete对应的是new;free用来释放malloc出来动态内存,delete用来释放new出来的动态内存空间。 应用的区别为: 1. 数组的时候int *p=(int*)malloc(10*sizeof(int)) 释放的时候 free(p)即可;这是因为编译器对malloc做了一些特殊的处理,以保证可以正确释放内存。而当int *p=new int[10]释放...
首先free对应的是malloc; delete对应的是new 1. 数组的时候int *p=(int*)malloc(10*sizeof(int)) 释放的时候 free(p)即可;这是因为编译器对malloc做了一些特殊的处理,以保证可以正确释放内存。而当int *p=new int[10]释放的时候应为delete []p,注意[]的作用说明释放的是一个数组的内存,如果delete p则只...
free(p);//释放内存 在C++中,这两个函数仍然可以使用,但是C++又新增了两个关键字,new 和 delete:new 用来动态分配内存,delete 用来释放内存。 用new 和 delete 分配内存更加简单: int*p=newint;//分配1个int型的内存空间 delete p;//释放内存
百度试题 题目char* p = new char(32);释放内存的语句是:? delete [] p;delete p;delete p;free(p) 相关知识点: 试题来源: 解析 delete p; 反馈 收藏
delete p; //安全地释放内存 } else { //处理空指针的情况,例如输出错误信息或忽略该操作 } 三、free函数 1.用途 free函数主要用于释放由malloc、calloc或realloc函数分配的内存空间。在C语言中,我们使用这些函数来动态地分配内存,而使用free函数来释放这些内存。与delete函数不同,free函数不会调用对象的析构函数...
void free( void * memblock ); 为什么free 函数不象malloc 函数那样复杂呢?这是因为指针p 的类型以及它所指的内存的容量事先都是知道的,语句free(p)能正确地释放内存。如果p 是NULL 指针,那么free 对p 无论操作多少次都不会出问题。如果p 不是NULL 指针,那么free 对p连续操作两次就会导致程序运行错误。
delete p; delete[] p; malloc&free,new&delete都是申请&释放空间,但是,有如下几点不同 1.new申请时不需要强制转换类型,也不需要申请结束后判断是否申请到(因为其内部含有未申请到异常退出) 2.new在为某个对象申请空间时,会调用构造函数,因此可在申请时初始化(对象的构造函数要支持),delete也会在释放空间时会...
在p不指向确定的空间时,delete p不可能具有合理的语义,因此这是逻辑上错误的用法。如果int *p; delete p;是连续的,那么p不可能是全局或静态变量,所以是错误的。正确的用法是让p指向某一块new得到的指针,然后可以delete p;;要注意多次delete同一个值也会出错,所以之后最好p = 0以防止误操作...