C语言数组报错是游离报错,如图

我们通常据说的堆栈实际上是兩个东西,“堆”和“栈”

局部的自动变量,都是在栈上进行分配在进入子程序的时候自动分配,退出子程序的时候自动释放

在堆仩进行内存的申请与释放,需要使用malloc和free两者必须成对的出现,这一般有两个意思一个是free只能释放malloc申请的内存,二是调用顺序最好是后申请的先释放

回到你的问题,data[i]在释放的时候最好按申请时候的相反顺序进行。data所指向的数组必须是由malloc申请的如果是在栈上分配的,則不能由free释放

你对这个回答的评价是?

看样子你是在释放二维数组

其实二维数组中,data[i]的值 就是data[i][0]的地址你释放data[i]后整个数组都释放掉了,

释放data就是想释放data[0],data[1],等等,实际他们是不占空间的不需要释放。

你对这个回答的评价是

你对这个回答的评价是?

代码如上我定义了了两个长度為8的字符数组。但是当我输入长度超过8的字符时为什么依然可以正常输出。

我要回帖

更多关于 c语言报错 的文章

 

随机推荐