c语言字符数组如何释放消毁?

Python014

c语言字符数组如何释放消毁?,第1张

你提问中定义方式是在函数完成前释放不了的,你定义的字符数组,放在stack空间,不能用free()试图释放堆中的内容,因为那里是一段程序运行的保证。

只有使用malloc()在栈空间开辟的动态内存才能被释放!

如果你后面的代码想继续用这个数组名的话,这个数组还是可以重新赋值。你可以把你用到的数据独到这个变量中就行了!

你定义的anto数组在函数完成后,系统自己就回收了!

要看数组所使用的内存空间。

1、如果是局部函数栈空间中的数组,有程序自动回收。

void f()

{

int a[2] = {1,2} //局部栈空间上的数组,程序自动回收

}

2、如果是动态内存分配 的数组,在c语言中使用free()将其释放。回收有操作系统的堆管理器来进行操作。

void f()

{

int *p = (int *) malloc(2 * sizeof(int))

free(p) //释放

}

数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。

一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

例如:

int a[10]说明整型数组a,有10个元素。

float b[10],c[20]说明实型数组b,有10个元素,实型数组c,有20个元素。

char ch[20]说明字符数组ch,有20个元素。

有两种方法可以实现。

为方便说明,定义整型数组a,并实现将a清空。

int a[4] = {1,2,3,4}

1、 通过数组遍历,逐个赋值为0。

定义循环变量int i

for(i = 0i <4i ++)

a[i]=0

该程序功能为遍历数组a,逐个将元素赋值为0,实现清空效果。

2、 借助内存赋值函数memset,整体赋值为0。

void *memset(void *dst, int value, size_t size)

这个函数的功能为将src上,大小为size字节的数据赋值为value。需要注意的是,该函数赋值是以字节为单位的。

调用该函数时需要引用头文件string.h,即

#include <string.h>

清空数组的代码为

memset(a,0,sizeof(a))