Ziron 发表于 2022-7-11 17:49

主函数main 使用堆叠的字节,请考虑将一些数据移动到堆

本帖最后由 Ziron 于 2022-7-12 10:38 编辑

如题
运行程序没问题,但出了警告,说我   main函数使用堆叠的“26408”字节,请考虑将一些数据移动到堆。请问大佬们,这怎么解决


头文件里面写了很多结构体
然后创建了90个结构体数组

charm999 发表于 2022-7-11 19:15

这个是灌溉系统吗

niuyufeng 发表于 2022-7-11 19:40

是说你在main函数里用的堆栈内存太多了,容易把堆栈空间用光,可以考虑用动态内存分配malloc free或 new delete,把数据分配到堆中,堆和栈是程序的两个内存空间。
如果你的程序和函数调用不是很多,这个警告忽略也可以,自己心里有数就行了

豪猪12138 发表于 2022-7-11 22:19

函数里面申请的局部变量是在栈区的,一般情况栈比堆小很多,编译器怕你栈溢出,所以给了这个警告,一般情况没事,可以用new或者放到全局变量里

Ziron 发表于 2022-7-12 09:45

豪猪12138 发表于 2022-7-11 22:19
函数里面申请的局部变量是在栈区的,一般情况栈比堆小很多,编译器怕你栈溢出,所以给了这个警告,一般情况 ...

可是我觉得我 栈上放的东西不多啊   

chengxuyuan01 发表于 2022-7-15 08:50

方法内的局部变量是放在虚拟机栈里面的,栈的内存一般不是很大,而且不会进行垃圾回收,所以一般不会房太多的局部变量,可以试着使用new放入堆中,如果该字符串使用较频繁,可以放入到元空间的常量池,元空间使用的是操作系统内存,一般不会溢出

豪猪12138 发表于 2022-7-15 17:48

Ziron 发表于 2022-7-12 09:45
可是我觉得我 栈上放的东西不多啊

你觉得不管用,得编译器觉得少才是少,再说不是只是个警告,说明还没有到溢出的地步
页: [1]
查看完整版本: 主函数main 使用堆叠的字节,请考虑将一些数据移动到堆