面试题:char s[10*1024*1024];有问题吗?——快手面试题

旅行   2024-10-28 11:54   广东  

欢迎关注本公众号,专注面试题拆解

分享一套视频课程:《C++实现百万并发服务器》
面试需要项目的可以找我获取,免费分享。 
欢迎V:fb964919126
网络编程系列,已经更新5篇,
欢迎阅读:网络编程







char s[10*1024*1024];有问题吗




回答:

有问题,在没有特殊设置的情况下,会发生栈溢出。(文末赠书)


先看下windows上:

#include <iostream>
int main() {
char sz[10*1024*1024]; getchar(); return 0;}

运行:


在 Visual Studio 中,默认的栈大小通常是 1MB,代码里面用到的是10M,所以发生了栈溢出。


在 Visual Studio 中,可以通过项目属性来设置栈大小:


打开项目属性(右键点击项目 -> 属性)。

转到 Configuration Properties -> Linker -> System。

在 Stack Reserve Size 和 Stack Commit Size 中设置栈大小。

设置之后再运行上面的代码正常通过没有发生崩溃。

再看下linux:

报错:

Segmentation fault (core dumped)


在 Linux 上,如果没有特别设置,默认的栈大小通常是 8MB。


在 Linux 上,可以使用 ulimit 命令查看最大栈大小:

ulimit -s

这将显示当前用户的最大栈大小限制。


可以通过 ulimit 命令修改栈的大小

ulimit -s  8096000

修改完后运行程序不再崩溃。


00

总结

栈空间限制:在栈上分配大数组可能会导致栈溢出,特别是在默认栈大小较小的情况下。


堆内存分配:使用 new 或智能指针将数组放在堆上分配,可以避免栈溢出问题。


调整栈大小:如果确实需要在栈上分配大数组,可以通过编译器选项或项目属性调整栈大小,但需注意安全性和性能影响。






今日送书福利  
《AI训练师手册:算法与模型训练从入门到精通》本书适合准备从事AI训练师的读者,以及对人工智能感兴趣的读者,包括人工智能从业者、模型开发者、数据标注师、数据分析师、AI产品经理、企业决策者、任何想要提升AI技能的人。此外,本书还可以作为相关培训机构和职业院校的参考教材。

R语言统计分析与可视化从入门到精通

本书循序渐进、深入讲解了R语言数据统计分析与应用的核心知识,并通过具体实例的实现过程演练了知识点的用法和流程。全书共16章,分别讲解了R语言基础、R语言数据统计语法基础、数据获取和处理、绘制可视化统计图、描述性统计分析、探索性数据分析、推论统计、回归分析、方差分析、非参数统计分析、主成分分析、聚类分析、生存分析、因子分析、基于机器学习的患者再入院预测分析系统和中概科技指数统计分析与投资系统。全书简洁而不失其技术深度,内容丰富全面,历史资料翔实齐全。同时,本书易于阅读,以极简的文字介绍了复杂的案例,同时涵盖了其他同类图书中很少涉及的历史参考资料,是学习R语言数据统计分析与应用的实用教程

  留言赠书参与方法 

分享一下你喜欢以上书籍中的哪一本,或者分享关于这道面试题的个人理解,中奖者可以获得上面的纸质书籍任选1本,免费包邮到家

活动截止时间:2024年11月4日 12:00 整

兑奖截止时间:2024年11月5日 12:00 整

end



CppPlayer 



关注,回复【电子书】珍藏CPP电子书资料赠送

精彩文章合集

专题推荐

【专辑】计算机网络真题拆解
【专辑】大厂最新真题
【专辑】C/C++面试真题拆解

CppPlayer
一个专注面试题拆解的公众号
 最新文章