博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言内存分配时间
阅读量:5033 次
发布时间:2019-06-12

本文共 990 字,大约阅读时间需要 3 分钟。

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把元素的数量传递到被调用函数之中。 

如:

arr_length=(sizeof(arr)/sizeof(arr[0]));size_count(arr, arr_length);
示例程序:

#include 
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);}

转载于:https://www.cnblogs.com/jediael/archive/2013/02/11/4304239.html

你可能感兴趣的文章
javascript继承
查看>>
海思uboot启动流程详细分析(三)【转】
查看>>
.NET之JSON序列化运用
查看>>
一般8位的微型机系统以16位来表示地址,则该计算机系统有几个地址空间
查看>>
sitemesh2.x+velocity+springmvc乱码解决方案
查看>>
(单例设计模式之一)饿汉式的反射与反序列化漏洞
查看>>
java中的final关键字和java抽象类
查看>>
用CSS3制作很特别的波浪形菜单
查看>>
Python面向对象03/继承
查看>>
Bing Maps进阶系列二:使用GeocodeService进行地理位置检索
查看>>
vector容器
查看>>
IDEA中使用mybatis逆向工程
查看>>
java序列化和反序列化
查看>>
绝对定位
查看>>
ubuntu集群下ssh配置总结
查看>>
flink源码编译(windows环境)
查看>>
dpkg 删除 百度网盘 程序
查看>>
服务器nginx安装
查看>>
std::nothrow
查看>>
rest-framework 分页器
查看>>