malloc的一些奇怪的问题

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

下面的一些用到的东西, 在我的博客里都能找到

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "chain_queue.h"
#include "binary_tree.h"
#include "dynamic_stack.h"
#include "single_linked_list.h"
int main(int argc, char *argv[])
{
    tree *root = NULL;
    tree *t; 
    create_tree(&root);//4 2 1 -1 -1 3 -1 -1 6 5 -1 -1 7 -1 -1
    tree_insert(&root, 0); 
    tree_insert(&root, -1);
    in_order_traversal (root);

    return 0;
}

输出结果说明有问题, 不知道为什么…wonder…
这个问题记录一下

经过我使用GDB调试器, 发现malloc 函数似乎有问题…我的天哪…

下面的是树节点所在的地址

display ((tree *) 0x555555758810)->data --> 1
display ((tree *) 0x5555557587d0)->data --> 2
display ((tree *) 0x5555557586b0)->data --> 3
display ((tree *) 0x555555758690)->data --> 4
display ((tree *) 0x555555758710)->data --> 5
display ((tree *) 0x555555758260)->data --> 6
display ((tree *) 0x555555758790)->data --> 7
display ((tree *) 0x555555758770)->data --> 0
display ((tree *) 0x5555557587f0)->data --> -1

然而, 我打印了in_order_traversal()函数的返回值create_stack(), s->arr 的地址时, 发现
&s->arr[8]的地址与 数值为-1的节点的地址是一样的, 都是 0x5555557587f0…
所以我怀疑 malloc函数出问题了, 但是这个问题怎么调试验证呢…

下一步是对malloc 与 calloc 函数的源码进行分析解读

关于解决裸机\stm32开发中一些奇怪的程序死机问题 Article Version: BK1:最初版本 关于解决裸机\stm32开发中一些奇怪的程序死机问题 可能的现象: 1. 无缘无故死机,hardfault 2. 死机的位置很奇怪,每次都不同。 3. 稍微修改了一些看似无关紧要的代码,死机的位置和现象会完全不一样。 4. 有些函数前面调用正常,运行一会儿就在其中挂了。 5. 正常调用子函数,但是return / BX LR时无缘无故har... 阅读详情

相关推荐

超速U盘选购避坑指南:如何通过Rx Detect机制识别真伪USB3.0设备

本文深入解析了USB 3.0超速U盘的选购避坑要点,重点介绍了通过Rx Detect机制识别真伪设备的核心原理。文章提供了从软件检测到实际性能测试的完整方案,帮助消费者和技术人员有效辨别虚假的USB3.0设备,确保获得真正的超速传输体验。

weixin_29189373的博客 418

attribute “__malloc__“ does not take arguments 报错

attribute "__malloc__" does not take arguments 解决

qq_43235540的博客 2339

Aruba无线控制器实战:如何用Client Match优化企业办公区漫游(附SNR调优技巧)

本文深入解析了如何利用Aruba无线控制器的Client Match功能优化企业办公区无线漫游体验。通过实战配置,详细阐述了基于SNR(信噪比)的精细化调优策略,包括阈值设定、负载均衡与场景化参数调整,旨在解决终端粘滞、乒乓漫游等问题,实现智能、平滑的无缝漫游。

weixin_28318011的博客 195

55、经典问题解析四

1、关于动态内存分配 new 和 malloc 的区别是什么? — new关键字是C++的一部分       — malloc是由C库提供的函数 — new以具体类型为单位进行内存分配   — mallo以字节为单位进行内存分配 — new在申请空间时可进行初始化     — malloc仅根据需要申请定量的内存空间 delete 和 free 的区别是什么? ...

xiebs的博客 335

解决在Linux上nvcc编译.cu报错/usr/include/stdio.h(189): error: attribute “__malloc__“ does not take arguments

解决在Linux上nvcc编译.cu报错/usr/include/stdio.h(189): error: attribute "__malloc__" does not take arguments

m0_63428773的博客 812

运行python setup.py build install报错

运行python setup.py build install报错

zoey_peak的博客 1881

奇怪malloc问题!

我们的程序运行的很好,多少在每天0点时候可能会吧cpu弄的很高!开始怀疑是glibc的bug(因为死在malloc_consolidate),在网上没有查到,看来还是要查查自己的程序,可能是这个程序错误! 结果:是多线程问题,以为没有同步,使得一个内存被释放了多次,然后使得malloc实现中的list破坏,使得里面死循环!!!

ufwt的专栏 2510

使用malloc遇到的奇怪问题——调试的时候正确,运行的时候结果就不对了

为了偏于叙述,我将遇到问题的源代码进行了简化,只保留了出现问题的根本语句。 给出代码: #include <stdio.h> #include <stdlib.h> #define N 100 struct A { int a[N]; }; int main() { struct A* p; p = (struct A*)malloc(si...

weixin_30448685的博客 359

嵌入式linux l2tp,Linux

今天交叉编译一个程序時遇到了一个很奇怪问题,编译到最后一步链接時,发生了下面的错误:/opt/toolschain/3.4.1/arm-linux/lib/libjson.so: undefined reference to `rpl_realloc'/opt/toolschain/3.4.1/arm-linux/lib/libjson.so: undefined reference to `r...

weixin_28753113的博客 249

【Linux】借命令行参数的引导,探索环境变量的奥秘

本文主要讲解了命令行参数、环境变量和进程地址空间相关知识。

可涵的博客 1011

c语言结构体指针初始化

这bug困扰我两天了!非常诡异的bug,症状是传参的时候如果传递的是结构体指针,第一次读取结构体会出来正确的值,第二次就是垃圾数据了。bug的根源在于,应该一开始就用malloc初始化结构体指针作为返回值,而不是初始化一个结构体然后取地址。这么取出来的地址类型不对,会造成诡异的bug,比方说我遇上的这个,从这个症状咱能想到什么?     看代码!以后这错误不能犯了。结构体数组一生下来就必须mal

woxincd的专栏 5284

glibc的free()错误

今天自己写的php扩展出现了一点问题 运行第一次的时候运行中断,然后后面就都是好的 apache的日志里记录的错误如下 [code="php"] *** glibc detected *** /usr/local/apache/bin/httpd: free(): invalid next size (fast): 0x083334b8 *** [/code] 开始看到free以为...

Silver Hands 215

fopen android,Android iOS fopen and data

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?摘要:Android iOS fopen and dataokay...it's weired I am not sure it's restrict by the OS or something else...if I want to make a data like thisFILE*l_pFile = fopen(...

weixin_36002881的博客 195

cjson和malloc

由于项目需要,我要在STM32里面加入cjson的部分,方便生成json数据,回传到手机。 首先就记录一下最重要的一个问题—–cjson和malloc 修改malloc分配空间的大小,可以解决无法生成长json数据的问题

fuzhang_android的专栏 4269

C语言中关于malloc(0)问题

C语言中关于malloc(0)问题malloc(0)详解常见面试题 malloc(0)详解 首先来解释malloc(0)的问题,这个语法是对的,而且确实也分配了内存,但是内存空间是0,就是说返回给你的指针是不能用的,感觉奇怪吧?但是从操作系统的原理来解释就不奇怪了,这要涉及操作系统维护内存的方法来说了。 在内存管理中,内存被分为2部分,栈和堆,栈有自己的机器指令,是一个先进后出的数据结构,在这里不再过多解释了,malloc分配的内存是堆内存,由于堆没有自己的机器指令,所以要有系统自己编写算法来管理这片内存,

weixin_45905650的博客 5522

PSRAM 报错 malloc fail?内存优化方案

本文深入解析ESP32开发中启用PSRAM后malloc仍失败的问题,揭示多堆架构下内存分配的机制,指出默认malloc不使用PSRAM的根本原因,并提供heap_caps_malloc正确用法、内存碎片处理、初始化检查及最佳实践方案,帮助开发者有效利用外部内存。

l3m4n的博客 1060

C语言中关于malloc(0)问题

首先来解释malloc(0)的问题,这个语法是对的,而且确实也分配了内存,但是内存空间是0,就是说返回给你的指针是不能用的,感觉奇怪吧?但是从操作系统的原理来解释就不奇怪了,这要涉及操作系统维护内存的方法来说了,在内存管理中,内存被分为2部分,栈和堆,栈有自己的机器指令,是一个先进后出的数据结构,我就在这里不再过多解释了,malloc分配的内存是堆内存,由于堆没有自己的机器指令,所以要有系统自己编

harhy的专栏 1万+

C语言的malloc(0)问题

malloc这个函数,会有一个阈值,申请小于这个阈值的空间,那么会返回这个阈值大小的空间。首先来解释malloc(0)的问题,这个语法是对的,而且确实也分配了内存,但是内存空间是0,就是说返回给你的指针是不能用的,感觉奇怪吧?既然malloc另外分配内存来维护该内存块(算法链表占用大小),也就是说分配来用于维护该内存块的内存的大小也是有限的,那么到底是多少呢?还有,返回的指针是可用地址的起始地址,可用大小是固定的,在VC6下是56字节,这个大小可能就是链表的大小。如果申请一个负数,那么返回的是0,如下图。

u010787096的博客 1046

malloc(0)的问题

转自:http://blog.csdn.net/js_xj/article/details/5826042 ANSI C的,如果认为malloc(0)是语法错误的话,下面我写的就不用看了。 下面进入正题,关于malloc(0)这个问题,我在网上看到有个面试题好像就是问这个的,原题好像是: char *ptr; if ((ptr = (char *)malloc(0)) == NULL

543
上一篇: C语言实现链式结构二叉树的相关函数
下一篇: 码云的使用
hongsmallgod
博客等级 码龄9年 0粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值