VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1308|回复: 10

C++中一个函数可以使用多大的栈

[复制链接]

3

主题

10

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-1-21 17:20:01 | 显示全部楼层 |阅读模式
就是
void foo()
{
   char * p = new char[count]
}

那么这个count最大为多少呢??  是640k还是64k?
回复

使用道具 举报

0

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-31 15:36:01 | 显示全部楼层
这是堆.....

回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-31 17:46:05 | 显示全部楼层
栈的大小和实现相关吧
回复

使用道具 举报

3

主题

10

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-1-31 20:09:01 | 显示全部楼层
哦 sorry  习惯性写错了
应该是
void foo()
{
char  p[count]
}
回复

使用道具 举报

0

主题

15

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-2-1 01:27:01 | 显示全部楼层
……

印象中是只有64K

一般的话,如果数组不超过0.1k的话,我会选择用栈
但如果稍大的数组的话,我会选择用堆,
万一用到递归的话,栈是很有可能不够的
回复

使用道具 举报

3

主题

10

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-2-1 21:00:01 | 显示全部楼层
err....

在dev-cpp下
int main(void)
{
    char a[(1024 + 512 + 256 + 128 + 64 + 32 + 16 + 2  )*1024];
}
这样子不抱错

int main(void)
{
    char a[(1024 + 512 + 256 + 128 + 64 + 32 + 16 + 2 + 1 )*1024];
}
这样子报错了
回复

使用道具 举报

0

主题

41

帖子

28.00

积分

新手上路

Rank: 1

积分
28.00
发表于 2020-2-1 22:54:01 | 显示全部楼层
跟编译器相关
回复

使用道具 举报

0

主题

24

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-2-2 09:45:01 | 显示全部楼层
char * p = new char[count]
------------------------------------------------------------------------------
你的问题应该改为“一个函数可以使用多大的堆”。
回复

使用道具 举报

0

主题

57

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-2-2 12:54:02 | 显示全部楼层
这个看你编译的时候的选项,可以选择栈空间大小
同时,同线程的栈是一起用的,不存在一个函数所能用最大值的概念
那也要看调用此函数之前用掉了多少栈空间
回复

使用道具 举报

3

主题

10

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-2-4 16:00:01 | 显示全部楼层
int main(void)
{
char a[(1024 + 512 + 256 + 128 + 64 + 32 + 16 + 2 + 1 )*1024];
}

那么 就这样一个语句 其他的部分就占了约14k的内存 有点恐怖哦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表