c语言 动态内存规划
Posted 万物皆为二叉树
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 动态内存规划相关的知识,希望对你有一定的参考价值。
动态内存规划
内存分区以及功能
内存分配图
各区功能特点 以 堆区 栈区 介绍
栈区
堆区
动态内存分配
戳这里内存分配办法
动态内存分配函数
malloc和 free
- 动态内存开辟
int main()
int* pf1 = NULL;
int* pf2 = NULL;
pf1 = malloc(100); // 可移植性低
pf2 = malloc(10 * sizeof(int)); // 可移植性高
return 0;
注意:
每开辟一次动态内存 都需要判断一次是否为空指针
if (pf1 == NULL)
printf("out of");
return 1;
开辟一次,判断一次。
- 动态内存使用
动态内存使用方法和数组一样。但是不可以指针越界。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
int* pf1 = NULL;
int* pf2 = NULL;
pf1 = malloc(100); // 可移植性低
pf2 = malloc(10 * sizeof(int)); // 可移植性高
if (pf2 == NULL)
printf("out of");
return 1;
for (int i = 0; i < 10; i++)
*(pf2 + i) = i;
free(pr2);
return 0;
总结
- 数组在被声明是必须知道大小。动态内存开辟允许程序在运行的时候才知道开辟多少空间。
- malloc的参数是多少字节 而且开辟的内存是未经过初始化的。
- calloc的参数是每个元素的个数和长度 开辟的内存是经过初始化的。
- realloc的作用是改变一个已经开辟的空间大小。
pf2 = realloc(100, pf2);
切记 : 用完就扔 用前必看!
以上是关于c语言 动态内存规划的主要内容,如果未能解决你的问题,请参考以下文章