关于C语言h和c++语言中申请动态空间的方法malloc,calloc,new用法

在C语言中 我们必须使用malloc函数,因为C语言没有new这个操作符,但是如果你的编译器是C++的话,是可以使用new的.

C语言的malloc函数的使用方法:
1.首先定义一个long指针,像这样long* pNumber;
2.动态开辟一片内存(1000000个long),可以这样malloc(sizeof(long) * 1000000); malloc函数唯一的参数是一个size_t(unsigned long类型),它表示你要开辟的内存的大小,我们要开辟1000000个long.
3.返回一个void*指针,我们必须转换成long*指针,像这样(long*)malloc(..);

所以你要的程序就是:
long pNumber = (long)malloc(sizeof(long) * 1000000);
开辟后就可以像数组一样使用它了
使用完后,一定要记得释放它,用free,像这样free(pNumber);

使用new更方便.
下面是对C语言中malloc函数和calloc函数区别以及使用:希望可以帮助大家。

long* pNumber = new long[1000000];
使用完后,使用delete[]
像delete[] pNumnber;`Void *
返回类型为指针的话一般是返回的地址,要判断申请是否成功一半判断返回是否为空;
If(viod * malloc()!=Null)
    Printf(“返回申请地址成功”);
Else
    Printf(“返回申请地址失败”);
堆的地址空间申请:
Void*通用指针,对申请各种类型空间的地址进行接收。
Void *calloc (size_t number,size_t size);//(第一个参数申请这样单位大小的个数,什么样的单位大小)
Void *malloc(size_t size);//(10*sizeof(int))
最主要的区别是malloc对申请的空间不进行初始化,要想初始化必须调用其他函数(memset(void*/或数组的首地址,改为0sizeof(buff)))进行,而calloc会对空间进行初始化。
Void free(void *ptr);//释放刚刚申请的地址空间,因为一旦使用未被释放会一直消耗内存实现空间不够的错误。传进去的一定是申请到的地址,一旦有地址++就会段错误。
Void *redlloc(void *ptr ,size_t size);//第一个参数:原来空间地址,第一个参数:新的空间地址有多大。功能:对已有的地址的进行扩充或者删减;对calloc\mallco函数进行修饰。

`

猜你喜欢

转载自blog.csdn.net/qq_34758707/article/details/82427639