一、问题描述
在 vs 使用 malloc 和 new 开辟连续空间时,出现警告:子表达式可能溢出。
使用普通数组时没问题。
抓耳挠腮了一下午,在网上也没办法搜到对应原因或解决的方法,后来在晚上干泡面的时候突然灵感一发,然后就解决了,具体看下面。
二、问题分析
① malloc 和 new 是在堆区开辟空间。
②普通数组空间编译系统在栈区分配。
③堆区由我们操作。
基于以上三点,所以我想到是不是 vs 的权限问题导致报错。
随即,我在 vs 中手动设置了堆保留大小,然后就没报错了。
三、具体步骤
(一)点击最上面一行的“项目”。
(二)选择倒数第二个“****属性”(*****是你这个项目的名称)。
(三)链接器。
(四)系统。
(五)找到“堆保留大小”,设置为比较大的大小(“堆提交大小”等不需要设置)。
最后,还要记得释放空间,malloc 和 free 是库函数,搭配使用,new 和 delete 是运算符,搭配使用。