摘要: 信息来源:邪恶八进制信息安全团队(www.eviloctal.com)原始出处:51jsp.cn 今天在网上看到了这样一个问题,“如果malloc 了一块字符串的内存,然后,它改变了这个字符串的大小,问会不会有一部分内存没有被释放掉。”这个问题,以前的确没有仔细想过。 当然,我觉得是肯定会释放掉的,但是一直没有了解过free 的原理,不敢乱说。我看了一下操作系统的内存管理,基本上是这样的,当然各个系统的实现不一样。 操作系统管理内存,维护了一个空闲内存链表,malloc从个链表中选出一个来使用,每个内存块都有一个头部来表示这个内存的基本信息,如内存大小, 所以free 时候 能够记住... 阅读全文
posted @ 2011-11-04 10:05 auleaf 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 什么是黑客?Jargon File 包含了一大堆关于“hacker”这个词的定义,大部分与技术高超和热衷解决问题及超越极限有关。但如果你只想知道如何 成为 一名黑客,那么只有两件事情确实相关。这可以追溯到几十年前第一台分时小型电脑诞生, ARPAnet 实验也刚展开的年代,那时有一个由程序设计专家和网络名人所组成的, 具有分享特点的文化社群。这种文化的成员创造了 “hacker” 这个名词。黑客们建立了 Internet。黑客们发明出了现在使用的 UNIX 操作系统。黑客们使 Usenet 运作起来, 黑客们让 WWW 运转起来。如果你是这个文化的一部分,如果你对这种文化有所贡献,而且这个社群 阅读全文
posted @ 2011-11-04 09:47 auleaf 阅读(200) 评论(0) 推荐(0) 编辑
摘要: http://www.ituring.com.cn/article/414以下是我参加 Translate Geeks to Chinese 翻译活动 对第11篇的译文。这是我几个星期前就译过了的,真是巧。希望大家给点意见。原文标题:Become a Good Programmer in Six Really Hard Steps 原文链接在GDNet论坛里,其中一类比较常见到的是像这样的一些主题:“你好,我刚 [ 买了台电脑 | 写了一个简单的游戏 | 找到了一个游戏引擎 ] ,我想知道从这起步的话,可以走到哪?如果说我想要最终能实现某个特定目标的话,我需要学习什么东西呢?”首先,你必须明白 阅读全文
posted @ 2011-10-30 21:52 auleaf 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 把13个球按4,4,5分成A,B,C 3组,分别标号A1,A2,A3,A4,B1,B2,B3,B4,C1,C2,C3,C4,C5;先将A组和B组放在天平上:一。如果A和B平衡:则不同的球在C组中。将A1,A2,A3和C1,C2,C3放在天平上:(1)如果平衡:则不同的球在C4,C5中。取A1和C4放在天平上,如果平衡,则不同的球是C5。如果不平衡,则不同的球是C4。(2)如果不平衡:则不同的球在C1,C2,C3中。a.如果A1,A2,A3比C1,C2,C3重,说明不同的球比标准球轻。取C1,C2分别放在天平两端,如果平衡,则不同的球是C3。如果C1,C2不平衡,则不同的球是较轻的一个。b.如果 阅读全文
posted @ 2011-09-29 00:45 auleaf 阅读(485) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/jingxuewang110/article/details/67895571.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应,free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限 阅读全文
posted @ 2011-09-28 17:13 auleaf 阅读(251) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/hi_dzj/article/details/5993146 一、冒泡排序 已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变。再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变。再比较a[3]与a[4],以此类推,最后比较a[n-1]与a[n]的值。这样处理一轮后,a[n]的值一定是这组数据中最大的。再对a[1]~a[n-1]以相同方法处理一轮,则a[n-1]的值一定是a[1]~a[n-1]中最大的。再对a[1]... 阅读全文
posted @ 2011-09-27 23:22 auleaf 阅读(1691) 评论(0) 推荐(0) 编辑
摘要: /*给定两个字符串s1,s2,要求判定s2是否能够被s1做循环移位得到的字符串包含。*/解法1:将s1循环移动,每移动一次就比较一次。#include<stdio.h>#include<string.h>int main(){ char s1[]="AABCDEF"; char s2[]="CDEFA"; int len=strlen(s1); int i,j; char temp; for(i... 阅读全文
posted @ 2011-09-27 22:35 auleaf 阅读(5513) 评论(0) 推荐(0) 编辑
摘要: 一 面向对象(oop)1.封装2.继承基类---->派生类3.多态:派生类中可能出现与基类同名的方法。针对基类与派生类同名的方法,派生类要有自己的行为,必须要覆盖基类的方法。二 虚函数virtual funname(。。) // 基类允许实现该方法纯虚函数:virtual funname()=0 //基类不存在对该方法的实现。一个类中包含了一个纯虚函数,那么该类叫抽象类。 抽象类不能实例该类的对象。如果派生类也没有去实现基类中的纯虚函数,那么该派生类也是一个抽象类。三 多态(override)要和函数的重载(overload)区分1.多态是在存在继承关系的类中,看是否有相同的方法。2.重 阅读全文
posted @ 2011-09-19 15:07 auleaf 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 对于指针,sizeof操作符返回这个指针占的空间,一般是4个字节;而对于一个数组,sizeof返回这个数组所有元素占的总空间。char*与char[]容易混淆,一定要分清,而且char*="aaa"的写法现在不被提倡,应予以避免。strlen不区分是数组还是指针,就读到\0为止返回长度。而且strlen是不把\0计入字符串的长度的。int *p=NULL, sizeof(*p) = sizeof(int) = 4,是说整型数占用几个字节。某32位系统下, C++程序,请计算sizeof 的值#include <stdio.h>#include <mallo 阅读全文
posted @ 2011-09-19 15:01 auleaf 阅读(219) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>int main(void){int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1); //&a代表整个数组的地址,+1应该加上sizeof(a)的长度,所以ptr指向a[5]位置处。printf("%d %d\n",*(a+1),*(ptr-1));//a代表数组首元素的地址,+1应该加上sizeof(a[0]),所以a+1指向a[1]处。return 0; //输出是 2 5 } 对指针进行加1 操作,得到的是下一个元素的地址,而不是原有地址值直接加1。所以,一个类型为T的指针 阅读全文
posted @ 2011-09-19 15:00 auleaf 阅读(8107) 评论(0) 推荐(2) 编辑