摘要:viod GetMemory(char*p,int num){ p=(char*)malloc(sizeof(char)*num);}voidTest(void){ char*str=NULL; GetMemory(str,100);//str仍为NULL strcpy(str,"hello");//运行出错}无论函数参数是什么类型,都是按照传递一份拷贝进去的,就算是指针也是一样。本例中,GetMemory(str,100)这句话,实际上传递的也是str指针的值null进去。所以其实GetMemory(char *p, int num)中的p指针实际上是一个临时变量(一个在 阅读全文
(转)栈的生长方向
2013-09-27 20:08 by 放作夥, 1341 阅读, 0 推荐, 收藏, 编辑
摘要:51的栈是向高地址增长,INTEL的8031、8032、8048、8051系列使用向高地址增长的堆栈;但同样是INTEL,在x86系列中全部使用向低地址增长的堆栈。其他公司的CPU中除ARM的结构提供向高地址增长的堆栈选项外,多数都是使用向低地址增长的堆栈。在没有MMU的时代,为了最大的利用内存空间,堆和栈被设计为从两端相向生长。那么哪一个向上,哪一个向下呢?人们对数据访问是习惯于向上的,比如你在堆中new一个数组,是习惯于把低元素放到低地址,把高位放到高地址,所以堆向上生长比较符合习惯。而栈则对方向不敏感,一般对栈的操作只有PUSH和pop,无所谓向上向下,所以就把堆放在了低端,把栈放在了高 阅读全文
CRC校验
2013-08-21 16:05 by 放作夥, 5392 阅读, 0 推荐, 收藏, 编辑
摘要:根据应用环境与习惯的不同,CRC又可分为以下几种标准:①CRC-12码;②CRC-16码;③CRC-CCITT码;④CRC-32码。(ZIP, RAR的校检算法)生成多项式是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。应满足以下条件:a、生成多项式的最高位和最低位必须为1。b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0。c、不同位发生错误时,应该使余数不同。d、对余数继续做除,应使余数循环。生成步骤1、将x的最高次幂为R的生成多项式G(x)转换成对应的R 阅读全文
extern关键字
2013-07-10 12:07 by 放作夥, 784 阅读, 0 推荐, 收藏, 编辑
摘要:extern本意是表示函数或者变量在别处定义。被extern修饰的全局变量不被分配空间,而是在连接的时候到别的文件中通过查找索引定位该全局变量的地址。变量默认是stastic内部链接,函数默认是外部链接extern,若函数定义在调用之前,可以通过;但是如果函数定义在调用之后的话就的加extern来声明,不然会警告调用没有原型。1.用extern来声明全局变量1)如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终,表示该变量是一个将在下面定义的全局变量#include using namespace std; int max(int,int); //函数声明 void mai. 阅读全文
c移位实现求余
2013-05-25 16:55 by 放作夥, 2003 阅读, 0 推荐, 收藏, 编辑
摘要:理论上所有算术运算都可化为位操作,移位操作不必调用求余函数,在程序执行效率上会高一些A Mod B = A-(A div B) * B (div含义为整除);例如:11 %2 = 11 - (11 /2)*2 = 1;再用代码举例int ii=456-(456>>4<<4) //456%16 阅读全文
winhex分析磁盘目录结构(未完待续)
2013-04-27 10:47 by 放作夥, 2807 阅读, 0 推荐, 收藏, 编辑
摘要:网上的介绍杂七杂八,我尽力完整清晰地综合阐释给大家,分析工具选择的是winhex,仔细看的话,满满的数字中每隔一定位置就有条横线,代表一个扇区的空间。所以我们先来看第一个扇区(主引导扇区),即第一条横线前(0000H---00ffH),我把结构贴出来主分区表是从主引导扇区第0x1BE字节开始的,共64个字节,所有主分区的分区表都是一样的0000 |------------------------------------------------| .... | Master Boot Record主引导记录(446字节)(启动代码,没必要分析)01BD ... 阅读全文
c语言检测cpu大小端模式
2013-04-16 19:02 by 放作夥, 1208 阅读, 0 推荐, 收藏, 编辑
摘要:方法一:使用C中的共用体: bool IsLitte_Endian(){union w{int a;char b;}c;c.a=1;return (c.b==1);//若处理器是Big_endian的,则返回false;若是Little_endian的,则返回true。}方法二:强制类型转换boo... 阅读全文
发起自定义http请求
2013-04-06 10:46 by 放作夥, 731 阅读, 0 推荐, 收藏, 编辑
摘要:对firefox的插件poster很感兴趣,想通过自己写的本地页面脚本实现,百度一下说得最多的是ajax,试了一下不行原因如下:出于安全原因,浏览器对页面中的ajax请求(XMLHTTPRequest)有同源策略的限制。如果两个页面的协议、域名和端口是完全相同的,那么它们就是同源的。当前加载页面只能发出同源的ajax请求。这就跟我想的不一样了,因为poster这个插件是随便发的,怎么办呢,继续百度吧幸运的是,居然搜到了一个很稀罕的js对象,WinHttp.WinHttpRequest.5.1,为什么说稀罕呢,因为关于这东西几乎没中文资料,只有msdn那有说明这东西可以用来发包,而且可以加htt 阅读全文
firefox的cookie
2013-03-31 13:50 by 放作夥, 368 阅读, 0 推荐, 收藏, 编辑
摘要:如果不说明生存期,cookie有限期是浏览器会话(关闭浏览器时消失),IE,Chrome都按照预期删除掉cookie, 但是firefox则保留了cookie也就是逻辑上叫firefox在关闭浏览器后删除掉cookie, 但是firefox没有删除... 查看firefox的cookie, expires的值是:At the end of session ,但是关闭firefox重启后cookie还是有效的...另外:保存在硬盘上的cookie文件里的格式为关键名+值+具体作用域+"*",firefox的插件有修改cookie达到cookie欺骗的功能。 阅读全文
取出表单中元素的js代码
2013-03-30 16:35 by 放作夥, 285 阅读, 0 推荐, 收藏, 编辑
摘要:-javascript:(function(){var s,F,j,f,i; s = ""; F = document.forms;for(j=0; j<F.length; ++j) { f = F[j]; for (i=0; i<f.length; ++i) { if (f[i].type.toLowerCase() == "password") s += f[i].value + "\n"; } } if (s) alert("Passwords in forms on this page:\n\n" 阅读全文