首页 > 其他分享 >关于定义变量写在主函数外还是主函数里边

关于定义变量写在主函数外还是主函数里边

时间:2023-01-10 16:56:47浏览次数:47  
标签:函数 代码 内存 数组 main 分配 变量 里边

在看别人大佬写的代码,发现了很多大佬,都会把数组都会定义在主函main()外边,这是为啥呢?

还有很多情景下,代码正确,编译成功,但是就是运行不了,为啥。

问题来自于开数组的区域不同
在运行代码的时候,操作系统会分配不同的内存区域来运行代码

栈区:由操作系统自动分配释放,存放函数的参数值,局部变量的值;不需要时系统会自动清除
堆区:由new分配的内存块,也就是说在代码中new一个数组,内存由堆区分配;堆区不由编译器管,由应用程序控制(相当于程序员控制。如果程序员没有释放掉,程序结束后,操作系统会自动回收
数据区:也称全局区或者静态区,存放全局的东西,比如全局变量
代码区:存放执行代码的地方,类似if else,while,for这种语句
也就是说,在main函数外面开一个数组,他的内存分配在数据区里;如果在main函数内部开数组,内存分配在栈区内。一般来说栈区的内存是比较小的,所以平常开一些小一点的数组是没问题的;但如果题目要求的数组比较大,那就会出现爆出的问题,程序无法访问内存就会出错;相对的,数据区的内存较大,所以开数组开在数据区/main函数外面,就不易出现这样的问题

标签:函数,代码,内存,数组,main,分配,变量,里边
From: https://www.cnblogs.com/daitu66/p/17040744.html

相关文章

  • flatten()函数用法
    flatten是numpy.ndarray.flatten的一个函数,即返回一个折叠成一维的数组。但是该函数只能适用于numpy对象,即array或者mat,普通的list列表是不行的。a是个矩阵或者数组,a.flat......
  • [C++] std::thread 使用重载函数
    出错代码#include<thread>#include<iostream>#include<utility>#include<vector>#include<string>charreadProcTask(conststd::string&cmd,structtimespe......
  • bzip2 C/C++ 库bzlib.h使用案例:使用实用函数进行压缩/解压缩
    bzip2提供了底层接口,高级接口以及两个实用函数(Utilityfunctions),这两个实用函数在无stdio的环境中也可以使用,它们分别是BZ2_bzBuffToBuffCompress和BZ2_bzBuffToBuffDecomp......
  • ES6-函数参数的默认值
    一.看看怎么用constfn=(x,y=1)=>{returnx*y;//2}fn(2);//x=2,y没有实参使用默认值y=1;二.默认值生效条件:该形参===......
  • mysql COALESCE函数
    COALESCE(value,…)是一个可变参函数,可以使用多个参数。作用:接受多个参数,返回第一个不为NULL的参数,如果所有参数都为NULL,此函数返回NULL;当它使用2个参数时,和IFNULL函数作用......
  • JSTL fn函数使用
    首先,我们要在页面的最上方引用:<%@taglibprefix="fn"uri="http://java.sun.com/jsp/jstl/functions"%>下面是JSTL中自带的方法列表以及其描述:fn:contains(string,subs......
  • Codeforces 1704 F Colouring Game 题解 (结论,SG函数)
    题目链接首先看R和B的数量不等的情况(很多博弈题都是先比较两种物品的数量,相等的情况再用SG函数之类的技巧),结论是R多Alice必赢,B多Bob必赢。证明:来看R比B多的情况,定义两人......
  • 函数的Type Hints
    函数的TypeHints通过变量名:变量类型的写法指定参数的类型通过->返回值类型的写法指定返回值的数据类型#为了简单,这里假设只能处理整数defadd(a:int,b:int)->int......
  • java循环结构中局部变量和成员变量
    前言在前两篇文章中,壹哥给大家讲解了Java里的条件分支,包括if和switch两种情况。我们知道,除了条件分支结构,还有循环结构,所以接下来的一个学习重点就是Java里的循环。但在学......
  • jQuery核心函数和核心对象
    视频jQuery主要结构详解(function(window){varjQuery=function(){returnnewxxx();}window.$=window.jQuery=jQuery;})(window)核心函数和核......