C/C++中的分配内存初始化(new和malloc)

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,这样才能防止野指针带来的问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值