C语言之动态内存管理

x33g5p2x  于2021-12-08 转载在 其他  
字(0.6k)|赞(0)|评价(0)|浏览(174)

1、什么是动态内存?

2、为什么要有动态内存?

3、常见的内存错误

(1)指针没有指向一块合法的内存

(2)为指针分配的内存空间太小

(3)内存分配成功但并未初始化

(4)内存越界

(5)内存泄漏

1、什么是动态内存?

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define N 10
int main()
{
	int* p = (int*)malloc(sizeof(int) * N); //动态开辟空间
	//为什么要进行强制类型转换?因为不转换的话,默认的返回类型是void *
	if (NULL == p) {
		return 1;
	}
   //一般在使用malloc开辟的空间的时候,一定要注意要检测指针的合法性,即指针是否为空
   //如果不检测其合法性,程序虽然不会报错,但是会出现警告(VS2019环境下)         
	for (int i = 0; i < N; i++) {
		p[i] = i;
	}
	for (int i = 0; i < N; i++) {
		printf("%d ", i);
	}
	printf("\n");
	free(p); //开辟完之后,要程序员自主释放
	return 0;
}

2、为什么要有动态内存?

3、常见的内存错误

(1)指针没有指向一块合法的内存

(2)为指针分配的内存空间太小

(3)内存分配成功但并未初始化

(4)内存越界

(5)内存泄漏

相关文章