pppphhhhyyyy 2023-05-25 23:38 采纳率: 80.6%
浏览 72
已结题

C语言关于C6262错误的相关问题

今天写了一个题目,遇到一个关于堆的问题,翻找资料并没有找到合适的解答,想问一下各位这个需要怎么解决?然后我想知道int类型
的数组的的长度的范围

img

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-05-26 11:29
    关注

    内存基本分配
    可编程内存在基本上分为这样的几大部分:静态存储区堆区和栈区

    静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。静态存储区的生命周期相当于与程序的生命同时存在.

    栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放, 栈的生命周期很短暂.栈资源由编译器自动管理,无需手工控制。 栈是一块连续的内存区域,大小是操作系统预定好的,windows下栈大小是2M(也有是1M,在编译时确定,VC中可设置)。只要栈的剩余空间大于所申请空间,系统为程序提供内存,否则报异常提示栈溢出。 栈有静态分配和动态分配,静态分配由编译器完成(如局部变量分配),动态分配由alloca函数分配,但栈的动态分配的资源由编译器进行释放,无需程序员实现。

    堆区:亦称动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或delete释放内存。堆区的生命周期相当于与程序的生命同时存在(如果您不在程序运行中间将堆内存delete的话).堆中资源由程序员控制。堆是不连续的内存区域(因为系统是用链表来存储空闲内存地址,自然不是连续的),堆大小受限于计算机系统中有效的虚拟内存(32bit系统理论上是4G),所以堆的空间比较灵活,比较大。

    题主上面的代码,将 arr[] 和 arr2[] 两个数组的定义,放到int main() 函数之前,定义成全局变量即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月3日
  • 已采纳回答 5月26日
  • 创建了问题 5月25日