博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C/C++ 错误笔记-如果要释放内存,必须拿到内存的首地址进行释放
阅读量:6483 次
发布时间:2019-06-23

本文共 685 字,大约阅读时间需要 2 分钟。

例:修改字符串的第三个字母为a

#include 
#include
#include
#pragma warning(disable:4996)void main() { char *p = (char *)malloc(100); strcpy(p,"123456789"); p = p + 2; *p = 'a'; free(p); system("pause");}

运行,VS报下列错误:

出现这个问题的原因是,C语言规定:如果要释放内存,必须拿到内存的首地址进行释放

而p指针在释放之前,进行了移位操作,不再指向首地址,因此程序发生crash。解决办法:只需要保存首元素的地址用来释放即可。

#include 
#include
#include
#pragma warning(disable:4996)void main() { char *p = (char *)malloc(100); strcpy(p,"123456789"); char *pHeader = p; p = p + 2; *p = 'a'; printf("%s\n", pHeader); free(pHeader); system("pause");}

运行结果:

转载地址:http://iwbuo.baihongyu.com/

你可能感兴趣的文章
PHP限制上次文件只能是图片,php如何控制用户对图片的访问 PHP禁止图片盗链
查看>>
php替换颜色,php Hex RGB颜色值互换的使用
查看>>
PHP的Socket通信之UDP篇,PHP的Socket通信之UDP通信实例
查看>>
php array call,PHP通过_call实现多继承
查看>>
php代码写一串新年祝福,临时保存新年祝福的php+dede
查看>>
c语言替代php,Alternative operators and tokens(替代运算符和令牌)
查看>>
变频器matlab仿真模型,变频器matlab仿真模型
查看>>
sqoop java 调用,Sqoop简单使用及出现的问题
查看>>
关于php的运行环境 说法正确的是,以下哪一个是PHP的运行环境()A、JRUNB、IISC、APACHED、J2SDK...
查看>>
php框架 写sql语句的,ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
查看>>
php xml文件中有 amp,PHP中使用DOMDocument来处理HTML、XML文档
查看>>
自制php解释器,如何编写可以修改PHP解释器内部的自定义PHP扩展?
查看>>
oracle 脚本定时,Oracle存储过程定时执行2种方法
查看>>
oracle 捕获 语句,oracle9i 怎样自动捕获DML 语句
查看>>
oracle存储%3e,oracle 11g 使用ASM存储迁移
查看>>
eclipse php快捷键,EclipsePHP Studio快捷键
查看>>
oracle查看分区索引是否可用,【Oracle】error code [1502]; ORA-01502;索引的分区处于不可用状态...
查看>>
php的魔术常量trait,PHP基础-函数和魔术常量
查看>>
linux进程间通知,linux 进程间通信之消息传递
查看>>
Linux内核哪个版本有网络,Linux内核4.4版本带来的网络新特性
查看>>