1. c 内存分配函数

本文介绍了C语言中用于内存动态分配的四个关键函数:calloc、malloc、realloc和free。calloc用于分配指定数量的零初始化内存,malloc则分配未初始化的内存空间,realloc用于调整已分配内存的大小,而free用于释放不再需要的内存。通过示例代码展示了calloc和malloc的区别,并在main函数中调用了这两个函数进行演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. c 内存分配函数

序号 原型说明
1void *calloc(int num, int size);在内存中动态地分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0。所以它的结果是分配了 num*size 个字节长度的内存空间,并且每个字节的值都是0。
2void *malloc(int num);在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。
3void *realloc(void *address, int newsize);该函数重新分配内存,把内存扩展到 newsize。
4void free(void *address);该函数释放 address 所指向的内存块,释放的是动态分配的内存空间。

注:对内存分配,通常写工具类会用到,比如你要实现一个list等。通常情况的自定义内存是没有多大意义的。一般定义内存要对内存内部的指针进行管理,比如当前内存的位置,头部指针,尾部指针等。

2.代码 

// ConsoleApplication28.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include<string.h>
using namespace std;

void test() {
    char* description = (char*)malloc(10 * sizeof(char));
    cout <<"未赋值的空间:"<<description << "\n";
    strcpy((char*)description, "Zara Ali");
    cout << description << "\n";
    std::cout << "Hello World!\n";
    free(description);
}
void test2() {
    char* description = (char*)calloc(10,sizeof(char));
    cout <<"未赋值的空间:"<<description << "\n";
    strcpy((char*)description, "Zara Ali");
    cout << description << "\n";
    std::cout << "Hello World!\n";
    free(description);
}
int main()
{
    test();
    test2();
   
    getchar();
}

3.运行结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值