如何避免野指针
强调1
在使用
new
操作符时会调用malloc
去分配内存,分配内存之后回调构造函数去构造数据。但是对c语言来说没有这样的整套机制,所以需要对空间数据采用memset
进行置空。
malloc、free与new、delete
强调2
操作符
可以被重载,库函数
是不可以重载的。delete
与freee
调用后内存不会立刻释放,只是告诉操作系统这块内存可以用作它途。
malloc、free 用法,以及如何释放指针操作
#include <iostream> #include <cstring> #include <stdlib.h> #include <memory> using namespace std; int main(){ typedef struct data_type { int age; char name[20]; }data; data* bob; bob = (data*) malloc(sizeof(data)); memset(bob, 0, sizeof(bob)); //置空 if (bob != NULL) { bob->age = 22; strcpy(bob->name, "Robert"); printf ("%s is %d years old\n", bob->name, bob->age); } free(bob); bob = nullptr; return 0; }
充电站
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习