动态内存分配的补充 realloc和calloc函数

malloc calloc realloc 都是<stdilb.h>头文件的函数
函数原型:
void malloc(unsigned int num_bytes)
void
calloc(size_t n, size_t size)
void realloc(void *ptr, size_t new_Size)

先说malloc和calloc区别
malloc分配的空间里都是垃圾值,而calloc里全是0
但是malloc的效率比calloc的高

# include <stdio.h>
# include <malloc.h>
int main()
{
    int* p;
    int* pp;
    p = (int*)malloc(10 * sizeof(int));
    pp = (int*)calloc(10 ,sizeof(int));
    printf("malloc的存储空间:\n");
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", *(p+i));
    }
    printf("\n");
    printf("calloc的存储空间:\n");
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", *(pp+i));
    }
    printf("\n");
    return 0;
}

原文地址:https://www.cnblogs.com/panghushalu/p/11956916.html

时间: 2025-01-14 13:04:22

动态内存分配的补充 realloc和calloc函数的相关文章

c语言中的内存分配malloc、alloca、calloc、malloc、free、realloc、sbr

C语言跟内存分配方式 (1) 从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. (2) 在栈上创建.在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限. (3)从堆上分配,亦称动态内存分配.程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存.动态内存的

【C语言天天练(九)】动态内存分配

引言:数组的元素存储于内存中连续的位置上.当一个数组被声明时.它所须要的内存在编译时就被分配. 可是,我们能够使用动态内存分配在执行时为它分配内存. 一块内存的生命周期能够分为四个阶段:分配.初始化.使用.释放. 内存的分配一般使用C函数库里的malloc函数(原型:void *malloc(size_t size)). 关于malloc函数应该注意一下几点: 1.malloc的參数就是须要分配的内存的字节数. 2.malloc所分配的是一块连续的内存. 3.分配成功.则返回指向分配内存起始地址

Lesson(DynamicMerry)动态内存分配

//  main.m //  1-27随堂笔记 //讲师: 小辉 //笔者: 王学文 //  Created by lanouhn on 15/1/27. //  Copyright (c) 2015年 lanouhn. All rights reserved. //动态内存分配(DynamicMerry) #import <Foundation/Foundation.h> void test() { int x = 10; int y = 20; } //函数返回栈区的数据,是不安全的;一i

动态内存分配

1.C语言中的一切操作都是基于内存的 2.变量和数组都是内存的别名,如何分配这些内存由编译器在编译期间决定,定义数组的时候必须指定数组长度,而数组长度是在编译期就必须决定的 需求: 程序运行的过程中,可能需要使用一些额外的内存空间. malloc和free用于执行动态内存分配和释放. 1.malloc所分配的是一块连续的内存,以字节为单位,并且不带任何的类型信息 2.free用于将动态内存归还系统 注意: 1.malloc实际分配的内存可能会比请求的稍微多一点,但是不能依赖于编译器的这个行为 2

动态内存分配课后小结(1)

我们知道,当我们声明一个数组的时候,必须要用一个常量指定数组的长度,这是由于它所需要的内存空间取决于数据.但是如果我们不能预测程序所需要的精确数组长度,为了保证足够的空间,常常声明一个很大的长度,由此便可能造成不必要的空间浪费.所以引入了动态内存分配的概念. 在动态内存分配中,C函数库给我们提供了四个函数,分别是malloc(),realloc(),calloc()以及free(). 一.malloc()函数的用法及注意事项 例:#include<stdio.h> #inlcude<st

动态内存分配实例

1.#include <stdio.h>#include <malloc.h> int main(){    int i = 0;    int* pI = (int*)malloc(5 * sizeof(int));    short* pS = (short*)calloc(5, sizeof(short));        for(i=0; i<5; i++)    {        printf("pI[%d] = %d, pS[%d] = %d\n&quo

动态内存分配(c语言)

当声明一个数组时,它所需要的内存将在编译时就被分配.但是,数组的长度在运行时才知道.它所需要的空间取决于输入的数据.所以,存在某一个数组实际所占的内存超过编译器所分配的内存.这时候,程序就会出现问题.所以,我们可以使用动态内存分配.所谓动态内存分配即为在运行时为它分配内存. 动态内存分配函数有:malloc,calloc,realloc,free. 函数所在的头文件:#include <stdlib.h> 函数原型: void *malloc( size_t size );//字节数 void

C10_动态内存分配

// //  main.m //  C10_动态内存分配 // //  Created by dllo on 15/7/13. //  Copyright (c) 2015年 zhozhicheng. All rights reserved. // #import <Foundation/Foundation.h> void func(){ int x=5; int y=6; printf("x=%p\n",&x); printf("y=%p\n"

C程序的构成及动态内存分配

对一个程序,通常的理解就是,源码编译成机器代码,然后通过机器解释运行.不过是怎样编译成机器代码,和怎样运行的,无疑是个值得探讨的问题.怎样编译成机器代码,过程就是源码的编译.链接,编译器做了这些事.而怎样运行,却不是哪个器件自己一己之力就可以做到的.机器代码要在机器上运行,就得要请求硬件资源.涉及最多的就是CPU和内存了.CPU进行逻辑控制和运算,内存用于运行过程中的数据的快速交互场所. 一个C程序从其自身代码的结构上来看,编译过后不过是一段代码.而这段代码,从磁盘系统加载到内存中被称为代码段或