2 guo2guo2111 guo2guo2111 于 2015.07.06 19:53 提问

关于xcode的一个问题,有关内存释放的问题
char arr[] = "The secret of success is constancy to purpose";
long a = strlen(arr);

char *p = malloc(a +1);
p = arr;
*(p+a) = '\0';
printf("%s",p);
free(p);
p = NULL;

    没有下面的内存释放语句是没有问题的,加上之后就出现了问题

1个回答

oyljerry
oyljerry   Ds   Rxr 2015.07.06 20:06
已采纳

p = arr;
你这样把p的地址修改了,这样后面free的时候就会有问题

你应该用strcpy(p, arr)来复制内容

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
序列问题
题目描述 小H是个善于思考的学生,她正在思考一个有关序列的问题。她的面前浮现出了一个长度为n的序列{ai},她想找出两个非空的集合S、T。这两个集合要满足以下的条件: 两个集合中的元素都为整数,且都在 [1, n] 里,即Si,Ti ∈ [1, n]。 对于集合S中任意一个元素x,集合T中任意一个元素y,满足x < y。 对于大小分别为p, q的集合S与T,满足 a[s1] xor a[s2
关于已购经济适用住房上市出售有关问题的通知
 关于已购经济适用住房上市出售有关问题的通知(征求意见稿)各有关单位:根据《国务院关于解决城市低收入家庭住房困难的若干意见》(国发[2007]24号)、《建设部、发展改革委、监察部、财政部、国土资源部、人民银行、税务总局关于印发的通知》(建住房[2007]258号)、《北京市人民政府关于印发北京市经济适用住房管理办法(试行)》(京政发[2007]27号)等文件规定,经市政府批准
dll 动态设计
关于动态链接库,设计,以及调用! 详细的接受了,内存释放问题!
有关Java集合类的10大问题
原文地址:Top 10 questions about Java Collections
关于数据库的面试问题(整理)
一、MyISAM与INNODB的区别 MyISAM强调效率,执行速度比InnoDB快,但是不支持事务,不能在表损坏后修复数据。 InnoDB不保存行号,就是在执行count操作时,需要扫描整个表,而MyISAM只要直接读出行号就行。注意:如果count与where组合使用两种引擎都是需要扫描整个表 MyISAM适用: 1. count操作多 2. 插入少,查询多 3. 不需要事
关于大数据最常见的10个问题
1、云计算与大数据是什么关系?  云计算的关键词在于“整合”,无论你是通过现在已经很成熟的传统的虚拟机切分型技术,还是通过google后来所使用的海量节点聚合型技术,他都是通过将海量的服务器资源通过网络进行整合,调度分配给用户,从而解决用户因为存储计算资源不足所带来的问题。  大数据正是因为数据的爆发式增长带来的一个新的课题内容,如何存储如今互联网时代所产生的海量数据,如何有效的利用分析这些数据等...
野指针(内存操作的问题及规范
函数指针- 指针变量中的值非法的内存地址,进而形成野指针 - 野指针不是NULL指针,是指向不可用内存地址的指针 - C语言无法判断一个指针所保存的地址是否合法 野指针的由来 局部指针变量==没有初始化== 指针所指向的变量==在指针之前被销毁== 使用已经释放过的指针 进行了错误的指针运算 进行了==错误的强制类型转换== 代码示例: #include &amp;lt;stdio...
opencv有关内存释放的问题
转一个关于opencv内存泄露的文章: 出处:http://blog.csdn.net/xiaowei_cqu/article/details/7586847 1、内存泄露 内存泄露是说没有释放已经不能使用的内存,这里一般指堆的内存才需要显示的释放。比如用malloc,calloc,realloc,new分配的内存是在堆上的,需要用free,delete显示的回收。内存泄露最明显
数学建模关于销售问题
有关数学建模中一些基本模型,比如说销售商品的管理与运输
Java中有关this的一个问题
先看这样一个简单的程序: class Construct { int i=1; Construct(int num,int i){ this.i=i; } public static void main(String[] args){ Construct ct=new Construct(2,3); System.out.println(ct.i); } }