新建
上传
首页
助手
最?/div>
资料?/div>
工具

arm

 

学习笔记

--

程序中变量引起的思?/p>

 

今天在写代码的时候,遇到一个奇怪的问题,在函数内定义局部变量数组,

 

如果这个数组较大时程序就会跑飞,跑飞的地方如下:

/*

这一块是跑飞的代?/p>

 

*/uint32_t UserCode[244];UserCode[0]=1;/*

代码

 

over*/ 

 

如果数组比较小的话就没有问题,然后我上网查了一下资料这里理一下:

 

1

、由于局部变量创建的时候是静态创建在栈上的,所以栈的大小限制了局?/p>

 

变量?/p>

 

size

,如果栈小了,在运行的时候就会出现溢出,程序当然就飞了。这

 

里就有概念上的疑问了:静态创建和动态创建区别是什么?局部变量占用的?/p>

 

栈的空间,那么其他类型的变量呢?下面我们就来看这个问题?/p>

2

、静态创?/p>

 

和动态创建的区别我个人的理解:静态创建分为两个部分,一个是编译时,?/p>

 

个时候我们定义的静态变量和全局变量将在自动划分内存空间;一个是在运?/p>

 

时,就是局部变量,在栈区生成一个固定大小的空间;为什么说他是静态的呢?

 

因为这些变量或数组空间的大小我们是预先可知的。而动态创建呢?我们使?/p>

 

malloc 

?/p>

 

free 

创建和释放内存空间,他们的大小是按需分配,所以是动态创建,

 

是在堆上分配的?/p>

3

、变量类型分为:局部变量,静态局部变量,全局变量?/p>

 

静态全局变量。他们在存储上可以根据创建的方式进行分析,静态和全局都是

 

在编译是进行创建的,所以是在普通的内存区域,局部变量是在运行时创建的,

 

在栈上,但是栈上的空间和普通内存区域有没有重复呢?这个目前我还不清楚,

 

还需要继续加深理解。在作用域上:局部变量在调用函数的时候创建,返回?/p>

 

时候系统自己进行销毁;全局变量可以在工程的所有单元文件下使用;静态全

 

局变量只能在当前单元文件下使用;静态局部变量,只创建一次,函数返回?/p>

 

时候不对他进行任何操作,所以下次进函数的时候他保留的是上一次的值,?/p>

 

会清除?/p>

4

、堆和栈的区别:堆用于动态分配空间等,由程序员创建和操作?

Ͼλ
新建
上传
首页
助手
最?/div>
资料?/div>
工具

arm

 

学习笔记

--

程序中变量引起的思?/p>

 

今天在写代码的时候,遇到一个奇怪的问题,在函数内定义局部变量数组,

 

如果这个数组较大时程序就会跑飞,跑飞的地方如下:

/*

这一块是跑飞的代?/p>

 

*/uint32_t UserCode[244];UserCode[0]=1;/*

代码

 

over*/ 

 

如果数组比较小的话就没有问题,然后我上网查了一下资料这里理一下:

 

1

、由于局部变量创建的时候是静态创建在栈上的,所以栈的大小限制了局?/p>

 

变量?/p>

 

size

,如果栈小了,在运行的时候就会出现溢出,程序当然就飞了。这

 

里就有概念上的疑问了:静态创建和动态创建区别是什么?局部变量占用的?/p>

 

栈的空间,那么其他类型的变量呢?下面我们就来看这个问题?/p>

2

、静态创?/p>

 

和动态创建的区别我个人的理解:静态创建分为两个部分,一个是编译时,?/p>

 

个时候我们定义的静态变量和全局变量将在自动划分内存空间;一个是在运?/p>

 

时,就是局部变量,在栈区生成一个固定大小的空间;为什么说他是静态的呢?

 

因为这些变量或数组空间的大小我们是预先可知的。而动态创建呢?我们使?/p>

 

malloc 

?/p>

 

free 

创建和释放内存空间,他们的大小是按需分配,所以是动态创建,

 

是在堆上分配的?/p>

3

、变量类型分为:局部变量,静态局部变量,全局变量?/p>

 

静态全局变量。他们在存储上可以根据创建的方式进行分析,静态和全局都是

 

在编译是进行创建的,所以是在普通的内存区域,局部变量是在运行时创建的,

 

在栈上,但是栈上的空间和普通内存区域有没有重复呢?这个目前我还不清楚,

 

还需要继续加深理解。在作用域上:局部变量在调用函数的时候创建,返回?/p>

 

时候系统自己进行销毁;全局变量可以在工程的所有单元文件下使用;静态全

 

局变量只能在当前单元文件下使用;静态局部变量,只创建一次,函数返回?/p>

 

时候不对他进行任何操作,所以下次进函数的时候他保留的是上一次的值,?/p>

 

会清除?/p>

4

、堆和栈的区别:堆用于动态分配空间等,由程序员创建和操作?

">
新建
上传
首页
助手
最?/div>
资料?/div>
工具

arm

 

学习笔记

--

程序中变量引起的思?/p>

 

今天在写代码的时候,遇到一个奇怪的问题,在函数内定义局部变量数组,

 

如果这个数组较大时程序就会跑飞,跑飞的地方如下:

/*

这一块是跑飞的代?/p>

 

*/uint32_t UserCode[244];UserCode[0]=1;/*

代码

 

over*/ 

 

如果数组比较小的话就没有问题,然后我上网查了一下资料这里理一下:

 

1

、由于局部变量创建的时候是静态创建在栈上的,所以栈的大小限制了局?/p>

 

变量?/p>

 

size

,如果栈小了,在运行的时候就会出现溢出,程序当然就飞了。这

 

里就有概念上的疑问了:静态创建和动态创建区别是什么?局部变量占用的?/p>

 

栈的空间,那么其他类型的变量呢?下面我们就来看这个问题?/p>

2

、静态创?/p>

 

和动态创建的区别我个人的理解:静态创建分为两个部分,一个是编译时,?/p>

 

个时候我们定义的静态变量和全局变量将在自动划分内存空间;一个是在运?/p>

 

时,就是局部变量,在栈区生成一个固定大小的空间;为什么说他是静态的呢?

 

因为这些变量或数组空间的大小我们是预先可知的。而动态创建呢?我们使?/p>

 

malloc 

?/p>

 

free 

创建和释放内存空间,他们的大小是按需分配,所以是动态创建,

 

是在堆上分配的?/p>

3

、变量类型分为:局部变量,静态局部变量,全局变量?/p>

 

静态全局变量。他们在存储上可以根据创建的方式进行分析,静态和全局都是

 

在编译是进行创建的,所以是在普通的内存区域,局部变量是在运行时创建的,

 

在栈上,但是栈上的空间和普通内存区域有没有重复呢?这个目前我还不清楚,

 

还需要继续加深理解。在作用域上:局部变量在调用函数的时候创建,返回?/p>

 

时候系统自己进行销毁;全局变量可以在工程的所有单元文件下使用;静态全

 

局变量只能在当前单元文件下使用;静态局部变量,只创建一次,函数返回?/p>

 

时候不对他进行任何操作,所以下次进函数的时候他保留的是上一次的值,?/p>

 

会清除?/p>

4

、堆和栈的区别:堆用于动态分配空间等,由程序员创建和操作?

Ͼλ">
Ͼλ
Ŀ

arm学习笔记--程序中变量引起的思?- 百度文库
新建
上传
首页
助手
最?/div>
资料?/div>
工具

arm

 

学习笔记

--

程序中变量引起的思?/p>

 

今天在写代码的时候,遇到一个奇怪的问题,在函数内定义局部变量数组,

 

如果这个数组较大时程序就会跑飞,跑飞的地方如下:

/*

这一块是跑飞的代?/p>

 

*/uint32_t UserCode[244];UserCode[0]=1;/*

代码

 

over*/ 

 

如果数组比较小的话就没有问题,然后我上网查了一下资料这里理一下:

 

1

、由于局部变量创建的时候是静态创建在栈上的,所以栈的大小限制了局?/p>

 

变量?/p>

 

size

,如果栈小了,在运行的时候就会出现溢出,程序当然就飞了。这

 

里就有概念上的疑问了:静态创建和动态创建区别是什么?局部变量占用的?/p>

 

栈的空间,那么其他类型的变量呢?下面我们就来看这个问题?/p>

2

、静态创?/p>

 

和动态创建的区别我个人的理解:静态创建分为两个部分,一个是编译时,?/p>

 

个时候我们定义的静态变量和全局变量将在自动划分内存空间;一个是在运?/p>

 

时,就是局部变量,在栈区生成一个固定大小的空间;为什么说他是静态的呢?

 

因为这些变量或数组空间的大小我们是预先可知的。而动态创建呢?我们使?/p>

 

malloc 

?/p>

 

free 

创建和释放内存空间,他们的大小是按需分配,所以是动态创建,

 

是在堆上分配的?/p>

3

、变量类型分为:局部变量,静态局部变量,全局变量?/p>

 

静态全局变量。他们在存储上可以根据创建的方式进行分析,静态和全局都是

 

在编译是进行创建的,所以是在普通的内存区域,局部变量是在运行时创建的,

 

在栈上,但是栈上的空间和普通内存区域有没有重复呢?这个目前我还不清楚,

 

还需要继续加深理解。在作用域上:局部变量在调用函数的时候创建,返回?/p>

 

时候系统自己进行销毁;全局变量可以在工程的所有单元文件下使用;静态全

 

局变量只能在当前单元文件下使用;静态局部变量,只创建一次,函数返回?/p>

 

时候不对他进行任何操作,所以下次进函数的时候他保留的是上一次的值,?/p>

 

会清除?/p>

4

、堆和栈的区别:堆用于动态分配空间等,由程序员创建和操作?



ļ׺.doc޸Ϊ.docĶ

  • ݽṹĩϰ
  • ߵȴҵ ڶʽ
  • Сѧѧ֪ʶ
  • 01ȫ2017ʦ
  • ѧѧϵͳʵ
  • Ƽ2019깤Ṥܽἰ2019깤ƻ
  • עʦעCPAձа
  • Pythonѧϰ - ͼ
  • ӢҸſκϰ
  • ۲취 - ͼ

վ

԰ Ͼλ
ϵͷ779662525#qq.com(#滻Ϊ@)