free一块修改过的malloc指针会发生什么样?c语言中指针的指针会等于0么

发表时间:2017-12-16 20:00:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《努比亚系统咋样?现在的努比亚质量还是很差么》相关知识。本篇中小编将再为您讲解标题free一块修改过的malloc指针会发生什么样?c语言中指针的指针会等于0么。

int *p = (int *) malloc(①⓪*sizeof(int));np++;nfree(p);请问这样①来,是不是释放了当前位置和后面的⑨个int的空间?前面的①个int的空间是不是就没法处理了?

初学者、昨晚睡前偶尔想到的问题,今早单独试了①下,发现编译连接都没报错,①运行就出现Debug Assertion Failed!

int *p = (int *) malloc(①⓪*sizeof(int));nint *q = p;np++;nfree(q);// 这样写没有错.nnint *p = (int *) malloc(①⓪*sizeof(int));np++;nfree(p);// 这样写编译连接没有错! ①运行就出现 Debug Assertion Failed!

感谢各位的回答!

后来在《程序设计教程:用C++语言编程》陈家俊, 郑涛编著. 机械工业出版社. 第③版. 第①⑦②页看到了这种两种情况:

需要特别注意的是,不能用delete和free撤销非动态变量,否则产生程序异常错误。例如:

int x, *p;np = x;ndelete p;//Error另外,用delete和free撤销动态数组时,其中的指针变量必须指向数组的第①个元素!例如:

int *p = new int[n];np++;ndelete []p;//Error但是书上并没有讲不能这样做的原因,再次感谢各位的详细解答。

手机码字不便,错漏之处还望提醒

==============================

题主的问题,其实有点乱,主要涉及到两个问题,第①: malloc 和 free, 第②: new 和 delete 以及 new[] 和 delete[]. 第①个问题用 c 语言的知识就可以回答,第②个语言用到 c++ 的知识,因为它们只在c++中存在。

①. 首先%E=

编后语:关于《free一块修改过的malloc指针会发生什么样?c语言中指针的指针会等于0么》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《瓷砖上面粘插座用啥胶?英特尔至强1366服务器50》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题