摘要: #include <stdlib.h>#include <stdio.h>#include <string.h>int del_char(char* src, char c){ if ( NULL == src) { fprintf(stderr, "del_char failed: invalid input./n"); return -1; } char* pchTemp = (char*)malloc(strlen(src) + 1); if ( NULL == pchTemp) { fprintf(stderr, "de 阅读全文
posted @ 2011-09-25 21:51 火腿骑士 阅读(924) 评论(0) 推荐(0)
摘要: - 链表的建立、插入和删除数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性。但数组也同样存在一些弊病。如数组的大小在定义时要事先规定,不能在程序中进行调整,这样一来,在程序设计中针对不同问题有时需要3 0个大小的数组,有时需要5 0个数组的大小,难于统一。我们只能够根据可能的最大需求来定义数组,经常会造成一定存储空间的浪费。我们希望构造动态的数组,随时可以调整数组的大小,以满足不同问题的需要。链表就是我们需要的动态数组。它是在程序的执行过程中根据需要有数据存储就向系统要求申请存储空间,决不构成对存储区的浪费。链表是一种复杂的数据结构,其数据之间的相互关系使链表分成三种 阅读全文
posted @ 2011-09-25 14:44 火腿骑士 阅读(476) 评论(1) 推荐(0)
摘要: 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 (3) 从堆上分配,亦称动态内... 阅读全文
posted @ 2011-09-25 11:09 火腿骑士 阅读(418) 评论(2) 推荐(0)