0xc0000005等exception information

本文分析了0xc0000005异常的原因及解决办法,通常这种异常由非法内存引用引起,如指向NULL或已删除的指针,或尝试引用被覆盖的函数返回地址。通过一个具体的内存泄漏案例,探讨了new操作失败的情况,并强调了检查new操作成功性的必要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

出现0xc0000005的异常,一般是非法的内存地址引用,比如引用NULL地址或者被delete的指针,还有种情况是非法引用将函数返回地址覆盖写入,导致非法引用。

今天在调试一个程序时由于内存的泄漏,导致了大量消耗内存而无法释放,在程序用到50M左右内存时,出现以上异常,原因是new函数返回了NULL。而对其非法的引用了。

现在也不是很明白为什么在还有大量内存空闲的情况下,使用new时还会失败,看来,检查new的成功与否很必要。

同样的除0错误代码为0xc0000094

以后发现新的错误代码在写。

Unable to handle kernel paging request at virtual address fffffdfb pgd = 9893b828 [fffffdfb] *pgd=2fef9841, *pte=00000000, *ppte=00000000 Internal error: Oops - BUG: 27 [#3] PREEMPT SMP ARM Modules linked in: cdmadriver(O) zynqdatspace(O) zynqregspace(O) zynqirqspace(O) uio_pdrv_genirq CPU: 1 PID: 555 Comm: cdmatest Tainted: G D O 5.15.36-xilinx-v2022.2 #1 Hardware name: Xilinx Zynq Platform PC is at dmaIoCtrl+0x44/0x25c [cdmadriver] LR is at vfs_ioctl+0x20/0x38 pc : [<bf01c120>] lr : [<c01fff78>] psr: a00b0013 sp : c1ecfee0 ip : 00000001 fp : aefe6008 r10: 00000036 r9 : c1bc0180 r8 : 00000003 r7 : 00004101 r6 : be98bbe0 r5 : be98bbe0 r4 : c18dd100 r3 : fffffdfb r2 : 00000018 r1 : 00000000 r0 : c1ecfee8 Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none Control: 18c5387d Table: 01c0404a DAC: 00000051 Register r0 information: non-slab/vmalloc memory Register r1 information: NULL pointer Register r2 information: non-paged memory Register r3 information: non-paged memory Register r4 information: slab kmalloc-192 start c18dd0c0 pointer offset 64 size 192 Register r5 information: non-paged memory Register r6 information: non-paged memory Register r7 information: non-paged memory Register r8 information: non-paged memory Register r9 information: slab filp start c1bc0180 pointer offset 0 Register r10 information: non-paged memory Register r11 information: non-paged memory Register r12 information: non-paged memory Process cdmatest (pid: 555, stack limit = 0xf648a677) Stack: (0xc1ecfee0 to 0xc1ed0000) fee0: ffffffd8 0000001f c1baf9c0 0000001f c1ecff78 00022190 c1ece000 00000004 ff00: aefe6008 be10b395 0000001f c1e543a8 c1bc0180 be98bbe0 00004101 c01fff78 ff20: c1e543a8 c02008d8 00000000 00000000 c1baf9c0 00000000 00000000 00000000 ff40: 00000000 00000000 00000000 40040000 00000000 00000000 00000000 be10b395 ff60: c1baf9c0 00022190 c1baf9c0 00000000 c1baf9c0 00000000 00000000 be10b395 ff80: aefe6008 00000003 80000000 00000000 00000036 c01002a4 c1ece000 00000036 ffa0: aefe6008 c0100060 00000003 80000000 00000003 00004101 be98bbe0 00000000 ffc0: 00000003 80000000 00000000 00000036 00000000 00000000 00010cb0 aefe6008 ffe0: b6e8e971 be98bbcc 00010940 b6e8e978 800b0030 00000003 00000000 00000000 [<bf01c120>] (dmaIoCtrl [cdmadriver]) from [<c01fff78>] (vfs_ioctl+0x20/0x38) [<c01fff78>] (vfs_ioctl) from [<c02008d8>] (sys_ioctl+0xc0/0x918) [<c02008d8>] (sys_ioctl) from [<c0100060>] (ret_fast_syscall+0x0/0x48) Exception stack(0xc1ecffa8 to 0xc1ecfff0) ffa0: 00000003 80000000 00000003 00004101 be98bbe0 00000000 ffc0: 00000003 80000000 00000000 00000036 00000000 00000000 00010cb0 aefe6008 ffe0: b6e8e971 be98bbcc 00010940 b6e8e978 Code: e3a01000 e28d0008 e3a02018 e5943014 (e5936000) ---[ end trace 492e80f2fa491ffe ]--- dma_release! Segmentation fault
06-19
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值