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