有base64_encode自然有base64_decode,也是定义在PHP源码的ext\standard\base64.c文件中,仍然需要注意内存泄露。
(更多…)文章关键字 ‘C’
用C语言实现PHP的base64_decode函数
2010年12月20日,星期一用C语言实现PHP的base64_encode函数
2010年12月19日,星期日最近写的程序要用到base64_encode,网上一搜“C语言 base64”出来一堆代码,但是我向来是不惮以最坏的恶意来推测这些代码的。于是看了一下PHP源码,base64_encode函数定义在ext\standard\base64.c文件中。我把它改写了一下,需要注意内存是动态分配的,使用完之后记得free掉,否则会造成内存泄露。
(更多…)PHP函数源码中的return_value变量
2010年12月17日,星期五最近在看PHP的C源码,经常发现在函数定义中莫名其妙地出现一个没有任何声明的return_value变量,Google了一下才知道,这个变量是通过宏展开的。
(更多…)没有main函数的C程序
2010年12月12日,星期日在Visual C++中新建一个Console Application工程,添加一个.c文件,代码如下:
#pragma comment(linker, "/Entry:demon") void demon() { __asm ret; }
严格的说这好像已经不是C程序了,而且和编译器有关。没错,这只是标题党。
你可以分配多大的内存?
2010年12月7日,星期二《C专家编程》中的一个程序,觉得挺有意思,记录一下。
运行下列程序,看看在你的进程中可以分配多大的内存。
#include <stdio.h> #include <stdlib.h> main() { int Mb = 0; while ( malloc(1<<20)) ++Mb; printf("Allocated %d Mb total\n", Mb); }
总共分配的内存量取决于交换区和你的系统配置中的进程限制。如果实际分配的内存块小于1M字节,你实际得到的内存是否比这要多一些?为什么?
为了让这个程序能够在有内存限制的MS-DOS上运行,把每次分配的单元从1MB改为1KB(就是把1<<20改为1<<10,并用KB代替MB)。
在我的系统物理内存为2GB,可以分配的内存大概是1880MB,你的系统呢?
另,在Windows系统中把1<<20改为1<<10会有很神奇的事情发生哦~