免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: amaorn
打印 上一主题 下一主题

关于linux 栈的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-09-24 17:13 |只看该作者
32位机器 ,4字节?

论坛徽章:
0
12 [报告]
发表于 2007-09-24 18:04 |只看该作者
原帖由 zhongfangqing 于 2007-9-24 17:10 发表
linux系统中每次出栈和入栈是以多少字节为单位的?



2 or 4

论坛徽章:
0
13 [报告]
发表于 2007-09-24 19:30 |只看该作者
原帖由 amaorn 于 2007-9-24 15:42 发表
我把 max 改为 1024 * 1000 ~= 1(M)
就可以运行了!
这个到底是堆栈的限制,还是其他什么问题?


何解???

论坛徽章:
0
14 [报告]
发表于 2007-09-24 22:39 |只看该作者
运行一下下面这个代码看看


  1. #include<stdio.h>
  2. #include<sys/resource.h>

  3. int
  4. main()
  5. {
  6.   struct rlimit limit;
  7.   getrlimit(RLIMIT_STACK , &limit);
  8.   printf("%d\n" , limit.rlim_cur);
  9.   return 0;
  10. }


复制代码

论坛徽章:
0
15 [报告]
发表于 2007-09-25 02:04 |只看该作者
原帖由 amaorn 于 2007-9-24 15:24 发表
#define MAX 10000000
typedef long long int64;

int main()
{
  int64 i;
  int64 a[MAX];
  printf( " size = %d\n", sizeof( a )/sizeof( int64 )  );
}
为什么通过编译,段错误?

我测试过lin ...


32位系统, 每个 thread 的 stack 的大小, default 为 1M

论坛徽章:
0
16 [报告]
发表于 2007-09-25 08:02 |只看该作者
有以下的函数
void Func(int iX, int iY, unsigned char cColor);
在主函数中调用这玩意
int main(int argc, char **argv)
{
   int iX = 100;
   int iY = 50;
   unsigned char cColor;
  ...
   Func(iX,iY,cColor);
   return 1;  
}
那么在Func的函数参数压栈后,栈内的参数是怎么个排列的?都是以四字节为单位进栈?cColor这个参数也是以四字节为参数?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP