| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 956 人关注过本帖
标题:这样会不会省空间?
只看楼主 加入收藏
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
结帖率:97.78%
收藏
 问题点数:0 回复次数:7 
这样会不会省空间?
昨天在论坛里发了一个帖子,我认为用char 来定义类似于bool的值可以省空间,但是有人说不能。我也理解了,现在我又想到了一种方法,这个应该可以省空间了吧?
使用:
char *a;
a=(char *)malloc(1);
这样应该可以省下一些空间吧??
昨天我发的帖子的地址是:[url=http://bbs.bccn.net/thread-249159-1-1.html]http://bbs.bccn.net/thread-249159-1-1.html[/url]
搜索更多相关主题的帖子: 空间 
2008-12-14 11:33
xxwpk007
Rank: 4
等 级:业余侠客
帖 子:166
专家分:289
注 册:2007-7-29
收藏
得分:0 
程序代码:
#include <stdio.h>
struct m{
    unsigned char a: 1;
};
int main(void)
{
    struct m b;
    printf("%d\n",sizeof(b));
    return 0;
}

感觉这样会省一些空间,但效率会变慢
输出结果:1

[[it] 本帖最后由 xxwpk007 于 2008-12-14 12:21 编辑 [/it]]
2008-12-14 11:56
netsolo
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2008-3-6
收藏
得分:0 
建议LZ找本计算机组成原理方面的书看看
2008-12-14 12:23
netsolo
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2008-3-6
收藏
得分:0 
LZ这样做确实节省了几个字节的内存, 但是代码的执行效率下降不少
2008-12-14 12:29
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
回复 第2楼 xxwpk007 的帖子
哦,效率低啊
你的程序中的
struct m{
    unsigned char a: 1;
};
里面的unsigned char a: 1;是什么意思?
不懂。
是不是给这个a定义初始值?

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-12-14 13:28
rootkit
Rank: 1
等 级:新手上路
帖 子:197
专家分:5
注 册:2008-9-26
收藏
得分:0 
这些问题你应该在学完汇编后看C程序编译后的汇编代码才能找到答案,现在没必要追究这个,老老实实按照《C primer plus》上的内容学习吧。

另外,这个论坛在我看来没有什么技术含量,更可恶的是有不少人学了一点东西想当然的误导别人,在这里问问题获得正确的答案的概率太低了,建议你换一个有技术含量的论坛。
pfan论坛的C语言版我偶尔逛逛,学生居多,但是比较专业,技术含量还可以:
http://bbs.
ChinaUnix论坛的C语言版我常去,这里很专业,问问题可以得到比较权威准确的回复:
http://bbs.

pfan除学生外还有些已经工作的程序员上去逛,里头的学生也有很多是计算机专业的,所以这个论坛技术水平还可以,只是最近人气不怎么火。
CU则是国内最大的Unix社区,C和Unix是双生的,这里的C水平很高,人气也不错,论坛里牛人比较多,想在C上达到比较高的造诣这里不可不去。

如果你英文不错,推荐订阅comp.lang.c这个新闻组,这个是世界上顶尖的C语言社区,包括C语言标准委员会在内大量关心C语言的人都在订阅着这个新闻组。这年头搞技术的牛人都会订阅一些邮件列表或新闻组。可以用E-mail客户端订阅或使用google的转发服务。国内会用新闻组的人还不多,这里有简单的介绍:http://baike.baidu.com/view/834.htm

我在这个论坛回贴不多,但看你14岁就对计算机技术这么有兴趣,或许有朝一日能成为大牛,不想你夭折在这个技术n流的论坛。
凤凰自古栖大梧,良木由来作栋梁。
好自为之。

降妖除魔路,仗剑载酒行
借问谁家子,大唐游侠儿
2008-12-14 13:37
p1s
Rank: 4
等 级:贵宾
威 望:10
帖 子:454
专家分:3
注 册:2005-11-4
收藏
得分:0 
以下是引用zqy110007在2008-12-14 11:33的发言:

昨天在论坛里发了一个帖子,我认为用char 来定义类似于bool的值可以省空间,但是有人说不能。我也理解了,现在我又想到了一种方法,这个应该可以省空间了吧?
使用:
char *a;
a=(char *)malloc(1);
这样应该可以 ...

貌似根据某些书的说法malloc仍然会将数据对齐、优化,通常是8或16字节的,所以malloc(1)到底分配了多少内存出去,依然是由编译器和操作系统决定。
2008-12-14 14:46
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
回复 第7楼 p1s 的帖子
哦,还挺麻烦.

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-12-14 21:31
快速回复:这样会不会省空间?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017949 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved