C语言中的malloc和free
C++ 中的new和delete
#include <stdlib.h>
#include <string.h>
#include <iostream>
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\n", 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\n", gpointer);
//cout << "p = " << p << endl;
//*p = 100;
//test0();
test1();
return 0;
}