1、new和delete以及new[]和delete[]
#include<iostream>
using namespace std;
int main() {
int* p1 = new int;//动态分配一个4字节(int)空间
int* p2 = new int(10);//动态分配一个4字节(一个int)的空间,并初始化为10。
int* p3 = new int[10];//动态分配40个字节(10个int)的空间。
delete p1;
delete p2;
delete[] p3;
return 0;
}
通过上述的代码,就是说明了C++在使用new时常用的三种方式, //2020.7.14
int *p = new int //new 数据类型
int *p = new int (10);//new 数据类型(初始值)
int *p = new int [100]; //new 数据类型[常量表达式]
2、malloc和free的使用
首先使用malloc函数的函数的时候需要加上头文件#include <malloc.h>
#include <iostream>
#include<malloc.h>
using namespace std;
int main()
{
//[1]给指针申请内存
char *p = (char *)malloc(100);//申请一块内存,然后再释放
free(p);
//[2]较多的用法
int *p1 = (int*)malloc(sizeof(int));
*p1 = 10;
printf("%d\n", *p1);
//[3]申请int型的指针变量内存
int* b = (int*)malloc(sizeof(int)*4);
return 0;
}
参考博客:C++ 动态内存管理(new /delete-new[]/delete[]-N次释放)_porryCn的博客-优快云博客_new 什么时候释放
参考博客:C语言指针之二malloc的用法及详解_修炼之路-优快云博客_malloc函数用法
c++学习之概述--从C到C++_OrangeRen-优快云博客
注意:关于malloc的增加内容//2022.2
关于malloc的内存申请上述分配内容是有问题的,具体可以参考博客:c语言之内存的申请malloc() 和释放free() - stevenwuzheng - 博客园
指出两点问题:
1、malloc申请内存有可能不成功,所以需要增加判断 ,必须使用if(NULL!=p)语句来验证内存确实分配成功了
2、当free掉p之后,变成野指针的p,需要将它设置成p = NULL,这样才能防止野指针带来的问题。