首页 > 其他分享 >memcpy与free的时机

memcpy与free的时机

时间:2022-12-01 22:22:05浏览次数:41  
标签:结点 释放 free 数组 字符串 时机 解析 memcpy

这里的pickle_value结点就是解析的每个json数据的结点,定义如下。

注意共用体中的第二个结构体中有一个字符串指针,如果当前结点的type是PICKLE_STRING类型也就是字符串类型,那么这个指针就会指向字符串的首地址,这也是后面讲到的问题出现的地方。

下面的是我们的测试解析数组函数,解析途中框出的数组,然后获得类型判断是否正确,然后验证大小,然后获取解析的字符串的值。

之后会进入我们的数组解析函数,之后去掉前括号,就再次进入我们的主解析函数,实际上就是递归下降解析器。

这里面我们传入了一个e就是返回我们的a的解析结果的。实际上e就是中间保存数据的一个临时变量。当e返回的时候我们就用memcpy压栈。

下面问题就来了,因为e中有malloc的空间所以我就想的是把他释放掉,可是最后验证解析的值的时候怎么也获取不到a的值,经过摸查终于找到了这一步

我在使用完e之后随机释放了e的空间,释放函数如下

也就是这一步的释放掉了字符串数组的空间,但是我们前面已经把e压栈了,准备后面拿着e的值去访问字符串,但是我们又把指向字符串的指针释放掉了,所以造成了将解析的结果弹出栈然后访问数组解析元素的时候解析不到的原因。把这句注释掉,发现测试通过了。

以上仅是个人的大致猜测。

标签:结点,释放,free,数组,字符串,时机,解析,memcpy
From: https://www.cnblogs.com/poteitoutou/p/16942919.html

相关文章

  • EAV Antivirus Suite Free Edition/EAV防病毒软件套装免费版
    EAVAntivirusSuiteFreeEdition/EAV防病毒软件套装免费版许可协议:免费(Free)系统要求:Windows95/98/Me/NT/2000/XP/Vista限制:无(Nolimitations)当前版本:5.61界面截图:​......
  • freecodeCamp_建立城市轮廓
    点击查看代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>CitySkyline</title><linkhref="styles.css"rel="stylesh......
  • freeswitch配置SBC的方案
      概述freeswitch是一款好用的开源软交换平台。但是,fs不是专为SBC而开发的,所以需要做一些定制化的配置和开发。本文主要介绍如何利用fs的基本功能配置一个简单的S......
  • Freelancer.com(原GAF – GetAFreelancer)帐户里的钱如何取出?
    本文是为正在国外接活或准备扩展国外市场的朋友所写,如果你还没有在国外成功接活的经历,那么这里将带你提前体验一下成功时的历程。拿我在2008年1月14日收到款的一个项目举例,......
  • Freesql ORM 多条件枚举Sum
    反射枚举desc建拉姆达查询sum///<summary>///创建lambda表达式:p=>p.propertyName///</summary>///<typeparamname="T"></ty......
  • 为什么memcpy中要指定const void *
    voidcopyBytes(char*x,char*y,inthowMany)首先是你的指针char*,这意味着除了char*需要显式转换之外的任何指针类型.您应该使用void*,隐式转换指针类型.uint16_......
  • memcpy函数用法2
    头文件#include<string.h>memcpy()用来复制内存,其原型为:    void*memcpy(void*dest,constvoid*src,size_tnum);memcpy()会复制src所指的内存内容......
  • Freemark 常用代码总结1
    JAVA模版引擎Freemarker常用标签(一)1.if指令这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下:<#ifcondition>...<#elseifc......
  • 世界领先的图数据库Neo4j AuraDB Free
    世界领先的图数据库Neo4jAuraDBFree​​世界领先的图数据库Neo4jAuraDBFree​​​​一、Neo4jAuraDBFree现已在亚太地区发行​​​​二、快速使用Neo4jAuraDBFree​......
  • Could not freeze ./src/web3/address.js: Cannot read property 'hash' of undefine
    问题运行项目的时候,经常会有一大片错误Couldnotfreeze./src/web3/address.js:Cannotreadproperty'hash'ofundefinedHardSourceWebpackPlugin是webpack的插......