32位 VS 64位
-
- 帖子: 1187
- 注册时间: 2006-04-29 14:54
- 来自: 山东
- 联系:
-
- 帖子: 394
- 注册时间: 2005-09-29 17:58
stlxv 写了:这很有可能,不过要针对多少位版本的程序来说,例如下面一段会导致内存泄露的程序:xhy 写了:另外,64位运行同样的程序,所需内存会增大。
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 纯属谣言16位的话,int占用2个字节;32位的话4个字节,64位的话8个字节。代码: 全选
#include <malloc.h> int main() { malloc(sizeof(int)); return 0; }
所以,源程序同样,编译16/32/64位之后所占的内容是有区别的,而且64位会更加大。
错了! Linux 64和Unix 64是LP64, long和pointer是64位的,int还是32位
Linux debian 2.6.18.1lemote #1 Sat Jan 13 16:02:26 CST 2007 mips GNU/Linux
top - 10:13:17 up 70 days, 11:32 , 1 user, load average: 0.63, 0.61, 0.55
top - 10:13:17 up 70 days, 11:32 , 1 user, load average: 0.63, 0.61, 0.55
-
- 帖子: 9
- 注册时间: 2007-08-22 13:24
我的结论和楼上一致。xhy 写了:你确定你试过?stlxv 写了:这很有可能,不过要针对多少位版本的程序来说,例如下面一段会导致内存泄露的程序:xhy 写了:另外,64位运行同样的程序,所需内存会增大。
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 纯属谣言16位的话,int占用2个字节;32位的话4个字节,64位的话8个字节。代码: 全选
#include <malloc.h> int main() { malloc(sizeof(int)); return 0; }
所以,源程序同样,编译16/32/64位之后所占的内容是有区别的,而且64位会更加大。
AMD64机器 int仍然是4字节的
我的是AMD64系统+AMD64的GCC
还有 你提供的那段样本代码 根本不会造成内存泄露
不知道你看过Linux内核源码没有 2.6的内核 运行这段代码 都不会造成任何副作用
在进程结束时 调用_exit系统调用 陷入内核 并且内核会自动回收分配给进程的任何存储单元
在Montavista Linux上,32位和64位的int都是4个字节。
-
- 帖子: 5
- 注册时间: 2007-09-14 17:45
一般int型所占长度是机器的自然字长。这个姑且不论,仅仅是指针从32位变到64位也会多占用内存的,所以这个是有可能的,关于这个段代码有无副作用根本没有意义去争论,哪个程序员会傻到写这样的东西?xhy 写了:你确定你试过?stlxv 写了:这很有可能,不过要针对多少位版本的程序来说,例如下面一段会导致内存泄露的程序:xhy 写了:另外,64位运行同样的程序,所需内存会增大。
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 纯属谣言16位的话,int占用2个字节;32位的话4个字节,64位的话8个字节。代码: 全选
#include <malloc.h> int main() { malloc(sizeof(int)); return 0; }
所以,源程序同样,编译16/32/64位之后所占的内容是有区别的,而且64位会更加大。
AMD64机器 int仍然是4字节的
我的是AMD64系统+AMD64的GCC
还有 你提供的那段样本代码 根本不会造成内存泄露
不知道你看过Linux内核源码没有 2.6的内核 运行这段代码 都不会造成任何副作用
在进程结束时 调用_exit系统调用 陷入内核 并且内核会自动回收分配给进程的任何存储单元
- luojie-dune
- 帖子: 22033
- 注册时间: 2007-07-30 18:28
- 系统: Linux
- 来自: 空气中