当前位置: 首页 > >

malloc 和free,new和delete区别

发布时间:

C语言中的malloc和free
C++ 中的new和delete
?

#include
#include
#include
using std::cout;
using std::endl;

//野指针
//
//内存泄漏
//
//内存踩踏
//


//malloc/free 与new/delete的差别?
//1. malloc/free库函数, new/delete是表达式
//2. malloc只负责空间的申请,不会初始化空间;
// new表达式开辟空间的同时,会对空间进行初始化

void test0()
{
int * p;//不确定, 脏数据, 野指针
printf("p=%p
", p);
int * pint = (int *)malloc(sizeof(int));
memset(pint, 0, sizeof(int));
*pint = 10;
cout << "*pint = " << *pint << endl;

int * pint2 = (int *)malloc(sizeof(int) * 10);

free(pint);
free(pint2);
}

int * gpointer;//0

void test1()
{
int * pint = new int(1);
cout << "*pint = " << *pint << endl;

delete pint;

//开辟数组空间的时候,加上小括号,会对空间进行初始化
//不加小括号,有可能是脏数据
int * pint2 = new int[10]();

delete [] pint2;
}

int main(void)
{
//int * p;
//printf("gpointer=%p
", gpointer);
//cout << "p = " << p << endl;
//*p = 100;
//test0();
test1();

return 0;
}

?



友情链接: