社区
C语言
帖子详情
函数在编译时能确定占内存的大小吗?
warcao
2012-01-01 08:03:11
因为我sizeof一个函数提示是非法操作,想知道原因,望大家告知。
...全文
170
9
打赏
收藏
函数在编译时能确定占内存的大小吗?
因为我sizeof一个函数提示是非法操作,想知道原因,望大家告知。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iamnobody
2012-01-02
打赏
举报
回复
int fun(char x);
int result_value_size = sizeof(fun('i'));
int pointer_to_fun_size = sizeof(&fun);
不能用sizeof求出代码段的长度,那也不是C语言应该做的事.
LinkSe7en
2012-01-02
打赏
举报
回复
[Quote=引用 5 楼 ad136988861 的回复:]
sizeof也是人写的一个函数,他的局限性就在于数据段或者变量,struct
[/Quote]
sizeof 不是函数
叫我小林吧
2012-01-02
打赏
举报
回复
sizeof也是人写的一个函数,他的局限性就在于数据段或者变量,struct
辰岡墨竹
2012-01-02
打赏
举报
回复
用内联汇编可能可以,但是不是标准化的方法,而且不同编译器支持的内联汇编语法也有很大区别
薛定谔之死猫
2012-01-02
打赏
举报
回复
想确定一个函数的大小那只有自己写裸函数,并且函数体都有汇编代码构成,这样通过手工累计的办法可能能得到函数代码的长度~
warcao
2012-01-01
打赏
举报
回复
[Quote=引用 3 楼 anyidan 的回复:]
引用 2 楼 warcao 的回复:
引用 1 楼 shagpg2008 的回复:
sizeof不是这么用的。只是针对变量。数据段的东西。对于代码段sizeof是没用的。
那代码段的长度应该也是可以确定的吧
那代码段的长度也不能如此确定
sizeof 的 操作数 只能是类型名和变量名
个人理解 编译阶段不一定能确定一个函数的长度,在编译阶段阶段后尚有优化和链接……
[/Quote] 有道理
AnYidan
2012-01-01
打赏
举报
回复
[Quote=引用 2 楼 warcao 的回复:]
引用 1 楼 shagpg2008 的回复:
sizeof不是这么用的。只是针对变量。数据段的东西。对于代码段sizeof是没用的。
那代码段的长度应该也是可以确定的吧
[/Quote]
那代码段的长度也不能如此确定
sizeof 的 操作数 只能是类型名和变量名
个人理解 编译阶段不一定能确定一个函数的长度,在编译阶段阶段后尚有优化和链接。。。
warcao
2012-01-01
打赏
举报
回复
[Quote=引用 1 楼 shagpg2008 的回复:]
sizeof不是这么用的。只是针对变量。数据段的东西。对于代码段sizeof是没用的。
[/Quote]
那代码段的长度应该也是可以确定的吧
shagpg2008
2012-01-01
打赏
举报
回复
sizeof不是这么用的。只是针对变量。数据段的东西。对于代码段sizeof是没用的。
C++中类所
占
的
内存
大小
以及成员
函数
的存储位置
类所
占
内存
的
大小
是由成员变量(静态变量除外)决定的,虚
函数
指针和虚基类指针也属于数据部分,成员
函数
是不计算在内的。因为在
编译
器处理后,成员变量和成员
函数
是分离的。成员
函数
还是以一般的
函数
一样的存在。a....
C/C++程序
编译
后运行时的
内存
分配
一、
编译
时与运行时的
内存
情况 1.
编译
时不分配
内存
编译
时是不分配
内存
的。此时只是根据声明时的类型进行
占
位,到以后程序执行时分配
内存
才会正确。所以声明是给
编译
器看的,聪明的
编译
器能根据声明帮你识别错误。 ...
程序
编译
后运行时的
内存
分配
1.程序
编译
时的运行状况
C/C++
编译
后程序所
占
用的
内存
分配详情
C/C++
编译
的程序
占
用的
内存
分配 1 栈区(stack) 由
编译
器自动分配释放,其操作方式类似于数据结构的栈, 栈的作用: (1)用于存放
函数
的参数值,用户程序临时创建的局部变量等,即
函数
括号{…}(void function(){...
sizeof 运算所得的值是在
编译
时还是运行时
确定
?
依据上述描述,可以得出结论sizeof的值是在
编译
时
确定
的,而非运行期
确定
。 如一下举例代码: // 需在C99标准的
编译
器下
编译
, ANSI C (即C89)下
编译
不通过 #include <stdio.h> #include <
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章