free一个无效指针
1. 错误描述: 刚才写了一个删除单链表的结点函数, 参数是 指向链表的指针和链表中指定删除的结点的指针。 当我free这个待删除的结点, 结果报错。
2. 为什么会报错?
我查了查MSDN, 看到“Attepmting to free an invalid pointer (a pointer to a memory block that was not allocated by calloc, malloc, or realloc) may affect subsequent allocation requests and cause errors”。 意思是 只能free掉由calloc,malloc, realloc申请的内存。 而我试图释放定义的结点所占内存。
3. 错误代码
status
Delete( struct NODE **rootp, struct NODE *node )
{
PNode p_node = NULL; if ( rootp == NULL ){
printf( "没有可操作的链表\n" );
return FALSE;
} if ( node == NULL ){
printf( "没有指定删除的结点\n" );
return FALSE;
} if ( node == *rootp ){
*rootp = node->next; /* 删除第一个结点 */ }else{
for ( p_node = *rootp;
p_node != NULL && p_node->next != node;
p_node = p_node->next ); if ( p_node == NULL ){
printf( "指定删除的结点不存在\n" );
return FALSE; }else{
p_node->next = node->next; /* 删除中间结点或尾结点 */
} } /* 问题在这里 */
free( node );
node = NULL;
return TRUE;
} /* main函数 */
void
main ()
{
PNode list = (PNode) malloc ( sizeof( struct NODE ) );
PNode p = NULL;
Node one, two, three, four; one.data = ;
two.data = ;
three.data = ;
four.data = ;
one.next = &two;
two.next = &three;
three.next = &four;
four.next = NULL; list->next = &one;
p = &three; if ( Delete( &list, p ) == TRUE ){
Put( list );
}else{
printf( "删除失败\n" );
}
}
free一个无效指针的更多相关文章
- 关于VS打开cshtml出现 未能完成该操作。无效指针
关于VS打开cshtml出现 未能完成该操作.无效指针 第一步:关闭VS 第二部:删除%LocalAppData%\Microsoft\VisualStudio\14.0\ComponentModel ...
- 对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点-----层序遍历的应用题
题目:对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点:如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL:给出程序实现,并分析时间复杂度和空间复杂度. ...
- “ddl”有一个无效 SelectedValue,因为它不在项目列表中。
“ddl_ekt”有一个无效 SelectedValue,因为它不在项目列表中. 怎么回事 现象: 在用户控件的page_load事件里绑定下拉框,报上面错误 解决: 将下拉框绑定,放在page_In ...
- 关于Visual Studio调试 无效指针提示
前几天遇到了这个问题,编译没问题,直接运行没问题 但是一调试,会提示无效指针,(按Ctrl+F5可以运行,但按F5提示无效指针) 只要这样,新建C:\ProgramData\Microsoft Vis ...
- 【转】 C++易混知识点4: 自己编写一个智能指针(Reference Counting)学习auto_ptr和reference counting
这篇文章建大的介绍了如何编写一个智能指针. 介绍: 什么是智能指针?答案想必大家都知道,智能指针的目的就是更好的管理好内存和动态分配的资源,智能指针是一个智能的指针,顾名思义,他可以帮助我们管理内存. ...
- 启动apache (OS 10022)提供了一个无效的參数。解决方式
今天 apache 突然启动不起来了,查看了一下错误日志发现了例如以下错误: [Tue Mar 17 11:27:32 2015] [crit] Parent: child process exite ...
- win7 LR11.0 启动controller报:Failed to create Online:无效指针
win7 LR11.0 启动controller报:Failed to create Online:无效指针 运行lr setup.exe 进行修复后问题解决 修复完成后,覆盖lr安装目录“bin”文 ...
- 有一个无效 SelectedValue,因为它不在项目列表中
“Drp_XX”有一个无效 SelectedValue,因为它不在项目列表中 出现以上异常的原因肯定是将DrowDownList控件的SelectedValue属性赋值为一个列表中不存在的值.那么我们 ...
- 这是一个无效的原路径/url
当我们在SourceTree上新建一个“从URL克隆”的远程项目时,在确认“URL”无误的前提下依然报红色字体“这是一个无效的原路径/URL”错误,我们只需要快捷键“Command + ,”打开Sou ...
随机推荐
- 在C#程序中实现插件架构
阅读提示:这篇文章将讲述如何利用C#奇妙的特性,实现插件架构,用插件(plug-ins)机制建立可扩展的解决方案. 在.NET框架下的C#语言,和其他.NET语言一样提供了很多强大的特性和机制.其中一 ...
- python图像卷积
import cv2import numpy as np #filier 2Dsavepath = "E:\\"image = cv2.imread('E:\\me.jpg');c ...
- Class.forName()的作用与使用总结
1.Class类简介: Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识.这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类 ...
- 项目新的需求,网页的自适应交付/响应式交付 Responsive/Adaptive Delivery
网页为什么要做自适应交付,皆因现在移动设备大行其道,现在是移动互联网时代,以IOS及Android为首的各种移动终端已经遍地开花. 当人家用380px的iphone打开你的网页时,你总不能显示个102 ...
- Hadoop 2.0安装以及不停集群加datanode
Hadoop2.0是对Hadoop1.0全面升级,针对Namenode单点问题,提出了HDFS Federation,让多个NameNode分管不同的目录进而实现访问隔离和横向扩展.诞生了通用的计算框 ...
- Codeforces 546E Soldier and Traveling(最大流)
题目大概说一张无向图,各个结点初始有ai人,现在每个人可以选择停留在原地或者移动到相邻的结点,问能否使各个结点的人数变为bi人. 如此建容量网络: 图上各个结点拆成两点i.i' 源点向i点连容量ai的 ...
- NUC_TeamTEST_C && POJ2299(只有归并)
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 42627 Accepted: 15507 ...
- ural 1341. Device
1341. Device Time limit: 1.0 secondMemory limit: 64 MB Major (M): You claimed that your device would ...
- BZOJ1481 : Navigation Game
设$f[i][j][k]$表示从最后一行某个$H$走到$(i,j)$且在第$i$行只经过了$(i,j)$,途中经过了$k$次$F$的最小代价. $A[i][j][k]$表示从下一行$\leq i$的某 ...
- BZOJ2061 : Country
记忆化搜索,设$f[i][j]$表示符号$i$一开始kmp指针为$j$,中间匹配了多少次,$g[i][j]$则表示匹配结束后kmp指针的位置. 时间复杂度$O(nl^2)$. #include< ...