C++读书笔记—malloc()函数的注意点及使用示例

21 篇文章 1 订阅

1、malloc()函数的头文件是stdlib.h,其函数声明如下:

     void* malloc(size_t size);

     其中参数size_t size表示动态内存分配空间的大小,以字节为单位。

    size_t 是typedef重定义的类型,重定义这样数据类型的作用就是让使用者一目了然,指示使用者这个参数表示一个长度,在       size后加上t,表示是整型相关数据类型的,以后看到xxx_t的类型,通常都是整型相关数据类型重定义。

    在这里malloc()函数的返回值是一个指针,或者说是分配后内存空间的首地址

    如果malloc()函数申请空间成功则返回一段内存空间的首地址,失败则返回NULL

2、int *p;

     p = malloc(sizeof(int));

     在这里是不能这样写的,会出现错误:从类型 'void*' 到类型‘int’的转换无效,应该改为:

       p =(int *) malloc(sizeof(int));

3、在使用malloc()函数申请的空间之前,最好用memset()函数把这段内存空间清理一下,因为用malloc()函数申请的空间仅仅保      证的是内存空间的大小,并不保证内存空间是否有数据垃圾

4、当不在使用malloc()函数申请的空间之后,应该使用如下函数释放掉这个内存空间:

     void  free(void *ptr);

     其中void *ptr是malloc()函数的返回值,也就是内存空间的首地址

     如果只知道使用,而不知道释放,则在7天*24小时运行的嵌入式产品中,很容易会出现内存泄漏,最终导致系统瘫痪

5、malloc()函数动态分配空间编程:

     /***************************************
malloc()函数动态分配空间编程:
(1)定义一个char*型指针变量p
(2)为p分配10个字节的内存空间
(3)复制"come on" 字符串到p指向的内存空间
(4)将p指针指向的内存空间再扩大20个字节
(5)将",baby!"字符复制在p指向空间字符串的后面
(6)释放p指向的空间
****************************************/
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;


int main()
{
char *p;
p = (char *)malloc(10*sizeof(char));

memset(p,0,10*sizeof(char));

strcpy(p,"come on");
cout << "p: " << p << endl;

p =(char *)realloc(p,20*sizeof(char));
cout << "p: " << sizeof(p) << endl;

strcat(p,",baby!");
cout << "p: " << p << endl;

free(p);
    return 0;

}

输出:

p: come on
p: 4
p: come on,baby!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxa1334

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值