问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

我使用malloc为什么就出问题了

发布网友 发布时间:2022-06-01 15:00

我来回答

2个回答

热心网友 时间:2024-07-22 17:39

因为主函数pmonth和pday所指内存的值是由函数month_day函数计算得出,得出的值k和yearday的再拷贝给这两个指针所指内存,我们知道函数内部变量的k和yearday实际上是存储在栈区,函数返回后,k和yearday所用内存将会被回收。所以通过给pmonth和pday所指内存分配堆区内存,然后将k和yearday的值保存在堆区,以便函数返回后依然能够使用k和yearday的值。正常情况下,申请多少,释放多少 。C/C++只会知道申请的内存量,不会知道你申请后实际访问的内存量。在这里,你实际使用超过了你申请的内存,这就意味着你的程序访问了不该使用的内存,这是一个严重的BUG,有个专用名词叫:“内存越界”。越界访问的这些内存,尤其是写入访问,可能导致未知的后果(因为很难预料越界访问的这块内存是干马用的): 1) 有可能它只是空闲内存,没有任何用处,这时你的程序就没有症状,运行良好; 2) 有可能是其它程序模块的数据区,这样,可能会在程序运行一段时间之后,其它模块因为其数据被莫名的改变而出现莫名的故障; 3) 也有可能这块内存是一段程序的机器代码或者是操作系统禁止访问的区域,这样就会导致程序崩溃(Crash)。malloc()分配的内存块其实是隐藏有一定的数据结构的,你越界访问导致破坏了这块描述内存块分配情况的数据结构,因此在free时可能会报错(实际是这就是上面说是第2种情况)。应该说这种情况还算是幸运的,有的时候时候 ,越界破坏的内存是一块效少使用的数据,这样,就会导致程序在运行了很久后在别的模块中出现莫名其妙的问题,这将使得排错异常困难。因此,用C/C++时进行内存(指针)访问,一定要特别小心,养成良好的习惯,否则可能将给你今后的编程生涯带来很多的麻烦。1、指针非法,比如使用没有初始化的指针(没有为此指针指向的对象分配空间),或着Free掉之后再次使用。3、缓存溢出,对于这种while{do}的程序,这个问题最容易发生,多此sprintf或着strcat有可能将某个buff填满,溢出,所以每次使用前,最好memset一下,不过要是一开始就是段错误,而不是运行了一会儿出现的,这种情况的可能性就比较小。malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。强转一下果然可以了。可是为什么之前在eclipse里写没事,在vs2012里就报错。编译器问题?可能吧,这个我到没注意过

热心网友 时间:2024-07-22 17:36

str = (int *)malloc(inputLen);
strBack = (int *)malloc(inputLen);
改为:

str = (int *)malloc(inputLen * sizeof(int));
strBack = (int *)malloc(inputLen * sizeof(int));
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
表格列求和公式怎么设置 求和函数公式怎么输入 北京注册成立一个公司需要多少钱 北京公司都是什么 手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 在word里怎么把图片打印出来像A4纸一样大呢?用电脑打印图片时怎么调... 你好 敷完面膜用洗脸吗 面膜上说敷完用手轻轻拍打吸收 你到底用不用... 敷面膜时拍打脸会吸收好一点吗 蛋清蜂蜜面膜敷脸是拍打还是自然干的好? 如何播放MKV格式的文件? 敷面膜时怎样才能让面膜的精华更好地被吸收? 做完面膜之后,是马上洗脸还是拍打脸皮让面膜渗透 怎么样才能播放MKV格式的视频 敷面膜时要轻轻拍打是为什么啊? mkv视频格式如何播放? 想做建材方面的生意需要注意什么 用手机号码怎么申请 通常所说的“建材生意”是指什么? 郑州大学体育学院都有什么专业 体育大学都有什么专业,体育大学都是做什么的, 霍元甲当初为什么吃鳄鱼肉 鳄鱼肉吃多会长虫是吗 iphone6s plus 屏幕坏了怎么办 ...里播放的安全提示语音 MP3 中小学校"安全温馨提示"校园广播铃声_百度... 起床温馨提示语~急用~快 C语言使用malloc的二维数组报错如何解决? C语言无限malloc会抛出异常吗?还是会耗尽内存? 请教有关 malloc:memory corruption:出错的原因&解决方法 C语言malloc函数出错 c语言程序一执行到malloc就结束程序了是什么问题?没有弹窗报错的。直接... malloc报错的问题。 【C语言】malloc申请内存出现异常! C++的malloc错误,求解释 malloc开辟空间后free导致的错误 LOL英雄时刻录制开启了进游戏了没录制功能? 英雄联盟以前可以录制英雄时刻的现在进游戏没录制功能怎么解决_百度... 我家用的是电信宽带猫,但是打开192.168.1.1这个地址,显示天翼宽带,上面... lol为什么英雄时刻功能开着、但是进游戏没有录制按钮。显示我的电脑配置... 我想了解中国银行票据种类你可以介绍一下吗? LOL我的大号开了英雄时刻但是进游戏不能录制 参观抚顺市雷锋纪念馆大概需要多长时间 lol英雄时刻我进去之后点了录制但出来后没有,是什么情况,以前都有的 LOL我获得了英雄时刻的录制资格。但是游戏开始的时候左边不提示。_百度... lol英雄时刻怎么开录制,我在游戏界面那里开了但是在游戏中左边没有 铁力市桃山医疗保险费在哪儿交纳?