我在linux下编写了一个简单的测试程序,编译可以通过,但是运行时报了“*** glibc detected *** free(): invalid pointer: 0x0000007fbffffa44 ***”错误,我将错误定位在free语句上,但是不知道为什么该语句会出错。请求各位帮忙。程序如下:
int main()
{
    char *A="hello world";
    char *B;
    B = (char*)malloc(strlen(A)+1);
    B = A;
    free(B);
    return 0;

}

A是字符串常量,B=A的地址,freeB,就相当于freeA,当然释放不掉,而且申请的动态空间,没有被释放,内存泄露啦

free  只能释放自己malloc的 内存

注意  memcpy函数 进行内存操作的时候 会出现的问题

#pragma pack (1) 
  6 struct cmd
  7 {
  8         unsigned short sign0;
  9         unsigned short crc;
 10         unsigned int addr;
 11         unsigned  char cmd;
 12         unsigned char *d;
 13 };
 14 #pragma pack () 
 15 
 16 
 17 int main()
 18 
 19 {
 20         unsigned char b[10]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9};
 21 
 22         int i;
 23         struct cmd  cmd_a;
 24 //      unsigned char *p;
 25 
 26 
 27         cmd_a.d=(unsigned  char *)malloc(15*sizeof(unsigned char));
 28         memset(cmd_a.d,0,15*sizeof(unsigned char));
 29 
 30 //      ss=(struct cmd*)malloc(sizeof(struct cmd));
 31 //      memset(ss,0,sizeof(struct cmd));
 32 
 33 //       ss->d= (unsigned char*)malloc(10*sizeof(unsigned char));/*3.结构体指针的成员指针同样需要初始化*/  
 34 //      memset(ss->d,0,10*sizeof())     
 35 
 36         memcpy(cmd_a.d,b,10*sizeof(unsigned char));

对 memcpy 进行拷贝之后

free(cmd_a.d)

这样就是操作错误的,内存发生了变化 ,不能释放 注意啊

关于释放内存的那点事相关推荐

  1. (非原)如何让.net开发的Winform程序快速释放内存

    .net开发的winform程序用一段时间后内存会占用特别大,影响本身以及其它程序运行. 似乎在软件内写一些内存释放管理之类的也不见效,其实告知客户,用一段时间最小化一次即可,最显著的据说从100M降 ...

  2. 深入理解 PHP7 unset 真的会释放内存吗?

    女主宣言 PHP 提供了 unset 用于释放指定的变量,那么它真的会释放内存吗?本文将从这个话题展开讨论. 本文作者范家鹏,360技术委员会--WEB服务端分TC委员. 文本转载自360技术,转载请 ...

  3. php7 unset函数,深入理解 PHP7 unset 真的会释放内存吗?

    一.关于unset的一些说法 有人说:unset() 并不真正释放内存: unset() 函数只能在变量值占用内存空间超过 256 字节时才会释放内存空间: 只有当指向该变量的所有变量(如引用变量)都 ...

  4. JNI内存方面说明以及相关类型手动释放内存

    JNI内存方面说明以及相关类型手动释放内存 一.Java内存 二.JNI内存和引用 三.Local Reference 四.Global Reference 五.Weak Global Referen ...

  5. 频繁分配释放内存导致的性能问题的分析--brk和mmap的实现

    现象 1 压力测试过程中,发现被测对象性能不够理想,具体表现为:  进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70  2 用ps -o majflt,minflt -C pr ...

  6. linux手动释放内存的方法

    Linux手动释放缓存的方法 Linux释放内存的命令: sync echo 1 > /proc/sys/vm/drop_caches drop_caches的值可以是0-3之间的数字,代表不同 ...

  7. 释放内存触发断点及数组、指针的NULL初始化

    Visual Studio调试时,出现"触发一个断点"内存释放出现异常 数组和对应指针的NULL初始化 数组使用之前要先对其初始化 char Outi[4] = { NULL }; ...

  8. 【百度分享】频繁分配释放内存导致的性能问题的分析

    现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为:  进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70  2 用ps -o majflt,minflt -C prog ...

  9. linux释放内存命令

    1.首先查看linux内存使用 #free -m 2.把内存数据同步到硬盘 #sync 3.修改 /proc/sys/vm/drop_caches文件 #echo 3 > /proc/sys/v ...

最新文章

  1. php日期时间戳相互转换,PHP时间戳和日期相互转换
  2. 双机热备+Win2003下集群案例
  3. linux /etc/profile和/etc/bashrc
  4. golang 读写文件的四种方式
  5. java控制台输入空格输出后不显示_为撒我加上输入输出流的代码后控制台反而什么都不显示了呢?...
  6. Granular Computing(粒计算)
  7. boost::range_reference相关的测试程序
  8. 我很喜欢玩游戏,那么我就适合做游戏程序员吗?
  9. 针对新手的Java EE7和Maven项目–第8部分
  10. 揪出MySQL磁盘消耗迅猛的真凶
  11. Linux——系统开关机指令简单学习笔记
  12. Kotlin入门(33)运用扩展属性
  13. Build DCM4chee2
  14. Python输入,输出,Python导入
  15. 【今日免费】下载19880元大数据开发从零基础到全链路全套教程(源码+视频)...
  16. 教你复制百度文库中的内容
  17. 给计算机老师的元旦祝福,送给老师的元旦祝福语(精选50句)
  18. 计算机磁盘管理没有打开方式,Win10系统双击磁盘和文件夹打不开提示没有与之关联的程序怎么办...
  19. 【沃顿商学院学习笔记】管理学——06腐败带来的间接成本和全球制裁状况Indirect Costs and Sanction
  20. 【论文笔记(2)】图卷积网络介绍 Understanding Convolutions on Graphs

热门文章

  1. JAVA NIO之文件通道
  2. jQuery学习笔记--JqGrid相关操作 方法列表 备忘 重点讲解(超重要)
  3. Maximum Likelihood Method极大似然估计的朴素理解
  4. Fishe向量Fisher Vecotr(二)
  5. Python爬虫实战(1):爬取糗事百科段子
  6. Ukbench图像数据集
  7. LibSVM 在matlab中的使用
  8. 【python图像处理】几何图形的绘制与文字的绘制(ImageDraw类详解)
  9. C语言 用typedef定义类型
  10. android ------- TCP/IP