当前位置:  技术问答>linux和unix

C语言 结构体动态数组内存释放问题

    来源: 互联网  发布时间:2016-05-14

    本文导语:  大家好,再发怪异一贴,请帮我研究一下,为什么我这个动态数组无法释放 /* 声明了结构体 */ typedef struct _Planmodel Planmodel; struct _Planmodel { const char *title; const char *resume; }; main(){         int nrow = 5   ...

大家好,再发怪异一贴,请帮我研究一下,为什么我这个动态数组无法释放


/* 声明了结构体 */
typedef struct _Planmodel Planmodel;
struct _Planmodel {
const char *title;
const char *resume;
};

main(){
        int nrow = 5
        
    Planmodel *stData = (Planmodel *)malloc(sizeof(Planmodel) + nrow +1);
    for(i = 0; i title = "test";
    stData->resume = "test";
    stData += sizeof(Planmodel);
            }
        free(stData);//这里出错,提示一堆错误信息。
}



*** glibc detected *** /home/shizhe/workspace/missmoblin/Debug/missmoblin: free(): invalid pointer: 0x0842e560 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb777aa85]
………………………………

|
错误太多了
main(){
        int nrow = 5;
       Planmodel *p;        
       Planmodel *stData = (Planmodel *)malloc(sizeof(Planmodel) * nrow ); // 这里好像要改
       if (stData == NULL)
       { printf("..."); return 1;/* 一定要养成这个习惯,虽然大多数情况没用 */ }
       p = stData;
       for(i = 0; i title = "test";
           p->resume = "test";
           p++; // 注意这里
       }
        free(stData);//这里出错,提示一堆错误信息。
}

|
1.Planmodel *stData是指向你Planmodel 结构的指针
而你分配的空间其实是一个Planmodel 结构数组的指针
这中间有问题
最好一个个申请,一个一个释放

stData->title 未初始化或者说指针未分配空间

    
 
 

您可能感兴趣的文章:

  • c语言合并两个已排序数组的示例(c语言数组排序)
  • 问一个c语言问题:变长数组与全局变量
  • C语言构建动态数组完整实例
  • c语言动态数组示例
  • C语言安全编码之数组索引位的合法范围
  • C语言求连续最大子数组和的方法
  • C语言中全局数组和局部数组的问题
  • c语言中用字符串数组显示菜单的解决方法
  • C语言二维数组的处理实例
  • C语言安全编码数组记法的一致性
  • C语言数组指针的小例子
  • Linux下C语言怎样从键盘读入一个十六进制字符数组
  • C语言中多维数组的内存分配和释放(malloc与free)的方法
  • C语言安全之数组长度与指针实例解析
  • 约瑟夫环问题(数组法)c语言实现
  • c语言中数组名a和&a详细介绍
  • 深入理解c语言数组
  • C语言小程序 数组操作示例代码
  • C语言柔性数组实例详解
  • c语言字符数组与字符串的使用详解
  • 在Linux上用C语言编写的函数里面申请了一块内存,并且返回这块内存,最终它需要释放吗?
  • C语言中堆空间的生成与释放详解
  • 在Linux上用C语言作了一个程序,程序中申请(malloc)了很大的内存,但是没free,当程序运行结束后,内存是否自动释放?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • C 语言内存错误检测工具 memwatch
  • 在语言中,什么是共享内存,怎样使用,举例?
  • C语言内存分配问题。
  • C语言内存泄漏检测工具 MemLeak
  • linux C语言 如何获取系统可用内存?
  • 现在我用c语言在linux下写一个服务端程序现发现了内存泄漏问题
  • C语言中各个段都在内存的什么地址范围?
  • 浅析C语言中的内存布局
  • C/C++语言中结构体的内存分配小例子
  • 笔试遇到内存操作思考题,C语言
  • C语言创建链表错误之通过指针参数申请动态内存实例分析
  • C语言中的内存泄露 怎样避免与检测
  • 解析C语言中位字段内存分配的问题
  • 怎么将这段JAVA代码换成C语言,实现同样的功能,就是查看进程内存?
  • 深入C语言内存区域分配(进程的各个段)详解
  • c语言内存泄露示例解析
  • C语言内存对齐实例详解
  • 深入探讨C语言中局部变量与全局变量在内存中的存放位置
  • C语言、C++内存对齐问题详解
  • 深入理解C语言内存对齐
  • 2013年7月和2013年8月编程语言排行榜
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • C语言中间语言 CIL
  • 编程语言 iis7站长之家
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3