C语言内存分配时间 分类: H_HISTORY 2013-02-11 10:51 1432人阅读 评论(3) 收藏
2013-02-11 10:51
337 查看
1、变量在声明时即分配内存,此时将根据变量的内存分配内存大小,如int类型4字节,float类型4字节,double类型8字节。如下例中的a.
2、但对于数组,有以下几种情况(以int类型为例):
(1)声明数组时即指定数组大小N,则此时可按N*sizeof(int)的大小分配内存。如下例中的c。
(2)声明数组时虽然未指明大小,但声明的同时也对数组进行了初始化,则按初始化时的元素数量N*sizeof(int)来分配内存。如下例中的d。
(3)声明数组的时候未指明大小,同时也未进行初始化。此类情况一般出现在函数的形式参数中,程序运行时,先为arr[]分配了内存,由于此时未知arr中元素的多少,因此只分配了1*sizeof(int),然后再把实参赋值到形参。如size_count函数。因此,没有办法在被调用函数中计算实参的大小,而必须在以一个单独的实参N把元素的数量传递到被调用函数之中。
如:
示例程序:
2、但对于数组,有以下几种情况(以int类型为例):
(1)声明数组时即指定数组大小N,则此时可按N*sizeof(int)的大小分配内存。如下例中的c。
(2)声明数组时虽然未指明大小,但声明的同时也对数组进行了初始化,则按初始化时的元素数量N*sizeof(int)来分配内存。如下例中的d。
(3)声明数组的时候未指明大小,同时也未进行初始化。此类情况一般出现在函数的形式参数中,程序运行时,先为arr[]分配了内存,由于此时未知arr中元素的多少,因此只分配了1*sizeof(int),然后再把实参赋值到形参。如size_count函数。因此,没有办法在被调用函数中计算实参的大小,而必须在以一个单独的实参N把元素的数量传递到被调用函数之中。
如:
arr_length=(sizeof(arr)/sizeof(arr[0])); size_count(arr, arr_length);
示例程序:
#include <stdio.h> int main(void){ int a; printf("%d\n",sizeof(a));//4 /*int b[]; printf("%d\n",sizeof(b));*/ //compile error: array size missing in 'b'. int c[10]; printf("%d\n",sizeof(c));//40 int d[]={0,1,2,3,4,5,6,7,8,9}; printf("%d\n",sizeof(c));//40 printf("%d\t%d\n", size_count(c), size_count(d));//4 4 printf("%d\t%d\t%d", sizeof(int), sizeof(float), sizeof(double));//4 4 8 return 0; } int size_count(int arr[]){ return sizeof(arr); }
相关文章推荐
- C语言声明数组变量时,在什么情况下,可不指定数组大小 分类: H_HISTORY 2013-02-11 11:03 694人阅读 评论(0) 收藏
- Linux内核中常见内存分配函数(二) 分类: arm-linux-Ubuntu 2013-08-08 17:58 723人阅读 评论(0) 收藏
- c语言中<stdbool.h>的使用 分类: H_HISTORY 2013-02-03 21:46 1416人阅读 评论(0) 收藏
- 使用C语言读取properties文件V1.0 分类: H_HISTORY 2013-02-26 12:37 946人阅读 评论(0) 收藏
- 指针与数组关联导致的一些现象 分类: H_HISTORY 2013-02-11 20:14 516人阅读 评论(0) 收藏
- C语言程序的内存分配方式 分类: H_HISTORY 2013-02-11 10:18 876人阅读 评论(3) 收藏
- C语言之时间函数 分类: C语言 2014-12-03 12:57 147人阅读 评论(0) 收藏
- return 与 exit()的区别--return退出本函数,exit()退出整个程序 分类: H_HISTORY 2013-02-03 19:44 367人阅读 评论(0) 收藏
- irms模拟数据生成及数据分析 分类: H_HISTORY 2015-03-06 14:17 212人阅读 评论(0) 收藏
- 01-Jvm 内存区域复习笔记 分类: JVM Java 2015-07-16 12:52 139人阅读 评论(0) 收藏
- c语言 中 # ##的使用方法 分类: 嵌入式开发学习 2014-05-23 17:16 141人阅读 评论(0) 收藏
- 【原创】C语言处理文件数据(4) 分类: Linux --- C 2014-11-06 11:15 87人阅读 评论(0) 收藏
- ARM汇编 C语言 C++ 相互调用 分类: 嵌入式开发学习 2014-04-18 21:17 800人阅读 评论(0) 收藏
- PHP从零单排(八)用PHP处理日期和时间 分类: PHP 2014-04-23 17:59 108人阅读 评论(0) 收藏
- OC基础:内存(进阶):retain.copy.assign的实现原理 分类: ios学习 OC 2015-06-26 17:36 58人阅读 评论(0) 收藏
- GTK+与QT的对比 分类: H_HISTORY 2013-02-05 09:27 3101人阅读 评论(0) 收藏
- 数据结构-Prim算法 分类: C语言 2012-05-11 07:25 798人阅读 评论(1) 收藏
- Python获取当前时间 分类: python 2014-11-08 19:02 132人阅读 评论(0) 收藏
- vxworks for x86读取bios时间的解决方法 分类: vxWorks 2014-04-29 17:13 478人阅读 评论(0) 收藏
- Linux查看进程的内存占用情况 分类: ubuntu 测试 2013-12-20 12:37 369人阅读 评论(0) 收藏