动态内存规划

动态内存分配

malloc,calloc,realloc与普通内存分配的区别

区别1

struct Node{
    int a;
    double b;
}
int main(){
    struct Node node[3];  
}

node所申请的内存为3,当代码不在main函数中时,node的内存会自动释放。而如果用malloc calloc,realloc生成内存,如果不用free函数,生成的内存不会释放。

区别2

若在程序运行前,不知道确切的数组元素个数,我们可以通过malloc,calloc,realloc生成动态内存。

如何通过malloc,calloc,realloc生成内存

malloc

px=(数据类型 *)malloc(size)

malloc:在堆上申请内存,并不初始化

其中,数据类型可以为int,double等常见类型,也可以为结构体自定义类型。若不知道类型,数据类型可以用void代替。

示例代码:

#include<stdio.h>
#include<stdlib.h>
int* test(){//测试内存是否会消失
	int num[5]={1,2,3,4,5};//自动申请内存
	int n=10;
	int *p=malloc(n*sizeof(int));//手动申请内存
	for(int i=0;i<n;i++){
	    p[i]=i+1;
	    printf("%d",p[i]);
	}
	printf("\n");
	return p;
}
int main(){
	int * num=test();
	printf("%d",num[4]);
	return 0;
}

calloc

px=(数据类型 *)malloc(size)

malloc:在堆上申请内存,并初始化0

其中,数据类型可以为int,double等常见类型,也可以为结构体自定义类型。若不知道类型,数据类型可以用void代替。

示例代码:

#include<stdio.h>
#include<stdlib.h>
int* test(){//测试内存是否会消失
	int num[5]={1,2,3,4,5};//自动申请内存
	int n=10;
	int *p=calloc(5,n*sizeof(int));//手动申请内存
	for(int i=0;i<n;i++){
	    printf("%d",p[i]);
	}
	printf("\n");
	return p;
}
int main(){
	int * num=test();
	printf("%d",num[4]);
	return 0;
}

相关推荐

  1. 动态内存规划

    2024-07-22 06:50:04       17 阅读
  2. 动态规划算法介绍

    2024-07-22 06:50:04       78 阅读
  3. 动态规划基础

    2024-07-22 06:50:04       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 06:50:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 06:50:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 06:50:04       45 阅读
  4. Python语言-面向对象

    2024-07-22 06:50:04       55 阅读

热门阅读

  1. js之深入对象和内置构造函数

    2024-07-22 06:50:04       18 阅读
  2. k8s安装powerjob

    2024-07-22 06:50:04       13 阅读
  3. 数据库day3 html----网页服务器设计(续)

    2024-07-22 06:50:04       18 阅读
  4. LeetCode 第407场周赛个人题解

    2024-07-22 06:50:04       18 阅读
  5. 认识 Glob Pattern

    2024-07-22 06:50:04       20 阅读
  6. 重载和重写的区别

    2024-07-22 06:50:04       15 阅读
  7. 白骑士的PyCharm教学基础篇 1.3 调试与运行

    2024-07-22 06:50:04       15 阅读
  8. RK RGA _MMU unsupported memory larger then 4G!问题解决

    2024-07-22 06:50:04       19 阅读
  9. C语言中的指针函数和函数指针

    2024-07-22 06:50:04       13 阅读
  10. 人工智能:改变我们日常生活的无形力量

    2024-07-22 06:50:04       17 阅读
  11. F - Palindromic Expression (abc363)

    2024-07-22 06:50:04       16 阅读
  12. iOS应用冷启动优化,可以做哪些事情

    2024-07-22 06:50:04       16 阅读
  13. MySQL学习之事务,锁机制

    2024-07-22 06:50:04       15 阅读
  14. 神经架构搜索:目标检测的未来

    2024-07-22 06:50:04       16 阅读