函数malloc与函数free

代码:

#include <stdio.h>
#include <stdlib.h>

int main(void) {

	const size_t SIZE = 5;

	// 函数malloc的返回值类型是void*
	// 函数原型:void* malloc(size_t)
	int* p = malloc(SIZE * sizeof(int));

	// int* p = (int*)malloc(SIZE * sizeof(int));

	// 如果发生错误则返回空指针
	// p == NULL 等价于 !p
	if (p == NULL) {
		exit(EXIT_FAILURE);
	}

	// 函数free释放存储空间
	// 函数原型:void free(void*)
	free(p);

	return EXIT_SUCCESS;
}
时间: 2024-10-13 15:52:25

函数malloc与函数free的相关文章

入职培训笔记记录--day9(1、指针函数与函数指针、函数指针数组 2、malloc memset 3、递归函数 4、结构体 5、共用体---》大小端 6、枚举)

1.指针函数与函数指针.函数指针数组 指针函数:返回值为指针的函数 char *fun() { char str[] = "hello world"; return str; } int main() { char *p = fun(); puts(p); return 0; } 编译时,会出现警告,返回了一个已经被释放掉的内存空间的首地址解决方法:1.static 2.char *str = "hello world"; 3.malloc 注意:使用完后要free

sizeof运算符、malloc函数及free函数

一.sizeof运算符的用法 1.sizeof运算符给出某个类型或变量在内存中所占据的字节数. int a;  sizeof(a)=4;  //sizeof(int)=4; double b;  sizeof(b)=8;  //sizeof(double)=8; 2.数组的sizeof值等于数组所占用的内存总字节数. 如:char a[] = "yes";  sizeof(a);  // 结果为4,字符末尾还存在一个NULL终止符 int a[3];  sizeof(a);  // 结

Linux C 堆内存管理函数malloc(),calloc(),realloc(),free()详解

C 编程中,经常需要操作的内存可分为下面几个类别: 堆栈区(stack):由编译器自动分配与释放,存放函数的参数值,局部变量,临时变量等等,它们获取的方式都是由编译器自动执行的 堆区(heap):一般由程序员分配与释放,基程序员不释放,程序结束时可能由操作系统回收(C/C++没有此等回收机制,Java/C#有),注意它与数据结构中的堆是两回事,分配方式倒是类似于链表. 全局区(静态区)(static):全局变量和静态变量的存储是放在一块儿的,初始化的全局变量和静态变量在一块区域,未初始化的全局变

动态分配内存函数:malloc(),calloc(),realloc(),以及memset(),free() 详细总结

以下资料大部分来源网络,个人进行了汇总和添加. 内存可分为下面几个类别: 堆栈区(stack):由编译器自动分配与释放,存放函数的参数值,局部变量,临时变量等等,它们获取的方式都是由编译器自动执行的,变量生命长度:函数结束即释放内存. 堆区(heap):一般由程序员分配与释放,即程序员不释放,程序结束时可能由操作系统回收(C/C++没有此等回收机制,Java/C#有),注意它与数据结构中的堆是两回事,分配方式倒是类似于链表. 全局区(静态区)(static):全局变量和静态变量的存储是放在一块儿

linux C函数之strdup函数分析

一.函数分析 1.函数原型: #include <string.h>char *strdup(const char *s); 2.功能: strdup()函数主要是拷贝字符串s的一个副本,由函数返回值返回,这个副本有自己的内存空间,和s没有关联.strdup函数复制一个字符串,使用完后,要使用delete函数删除在函数中动态申请的内存,strdup函数的参数不能为NULL,一旦为NULL,就会报段错误,因为该函数包括了strlen函数,而该函数参数不能是NULL. 3.strdup函数实现 c

动态内存分配函数与释放函数

(1)分配函数 void *malloc(sizeof(unsigned size) 功能:在内存的动态存储区中分配一块长度位size的连续空间. 返回值:指针,存放被分配内存的起始地址.若未申请到空间,则返回NULL(0). void *:指向任何类型的数据,在使用时,要进行强制类型转换. 例如:int *malloc(sizeof(int)) struct student *malloc(sizeof(struct student)) (2)释放函数 void free(void *ptr)

函数指针,函数指针数组,函数返回值为函数指针

函数的名字就是函数的首地址:定义函数指针; int (*p)(int ) p为函数指针变量名字,int 为函数的返回值类型为int型:(int)为函数的形参类型为int型, 注:因为优先级所以要用(*p),否则就会p先和后面的()结合为int*p(int),意思就变为p(int)函数的返回值为int* 注:main2()函数中   int (*p[])(int ,int )  为一维数组,下面写错了, #include<stdio.h> #include<stdlib.h> int

x264代码剖析(五):encode()函数之x264_encoder_open()函数

x264代码剖析(五):encode()函数之x264_encoder_open()函数 我们知道x264源码从主观上分为两大块,一是解析函数parse(),另一个是编码函数encode().解析函数parse()较简单,并且不涉及H.264编码算法,故不是重点,所以我们要学习的重点自然而然地就是编码函数encode()了. encode()函数是x264的主干函数,主要包括x264_encoder_open()函数.x264_encoder_headers()函数.x264_encoder_e

c语言(函数指针,回调函数)

//  main.m //  1-28随堂笔记 //讲师: 小辉 //笔者: 王学文 //  Created by lanouhn on 15/1/28. //  Copyright (c) 2015年 lanouhn. All rights reserved. // 函数指针, 回调函数 #import <Foundation/Foundation.h> struct student { char name[20]; float score; int age; }; typedef stru