首页 > 其他 > 详细

动态内存

时间:2016-03-11 19:07:30      阅读:162      评论:0      收藏:0      [点我收藏+]

malloc

void *melloc(size_t size)

size 开辟的字符数

int main()
{
   int *p=(int *)malloc(10*sizeof(int));//开辟40个字节
   //用malloc开辟空间一定要判断是否开辟成功
   if(p==NULL)
   {
   printf("out of memory");
   exit(EXIT_FAILURE);
   //EXIT_SUCCESS 0
   //EXIT_FAILURE 1
   }
   int i=0;
   for(;i<10;i++)
   {
   p[i]=i;//*(p+i)
   for(i=0;i<10;i++)
   {
   printf("%d",p[i]);
   }
   system("pause");
   return 0;
}

calloc

void *calloc(size_t numbei_elements,size_t element_new_size)

calloc的参数包括所需元素的数量和每个元素的字节数

//calloc  有可能会开辟失败,初始化
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i = 0;
	int *p = (int *)colloc(10, sizeof(int));
	if (p == NULL)
	{
		printf("out of memory");
		exit(EXIT_FAILURE);
	}
	for (i = 0; i < 10; i++)
	{
		printf("%d", p[i]);
		system("pause");
		return 0;
	}
}

realloc

realloc函数用于修改一个原先已经分配的内存块大小,realloc和calloc的区别主要是后者返回指向内存的指针之前把它初始化为0.

原型为:

void realloc(void *ptr,size_t new_size);

free

void  free(void *pointer);

free用于动态内存的释放,free的参数必须要么是NULL要么是一个先前从malloc、calloc、realloc返回的值,向free传递一个NULL参数不会产生任何效果

总结

  1. malloc和calloc都用于动态分配一块内存,并返回一个指向该内存的指针。

  2. malloc参数就是需要分配的内存的字节数,返回时内存未以任何形式初始化。

    calloc的参数是需要分配的元素的个数和每个元素的长度,在返回时把内存初始化为0。

  3. realloc函数可以改变一块已经动态分配的内存的大小

  4. malloc、realloc、calloc若开辟失败均返回NULL


本文出自 “无以伦比的暖阳” 博客,请务必保留此出处http://10797127.blog.51cto.com/10787127/1750009

动态内存

原文:http://10797127.blog.51cto.com/10787127/1750009

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!