截屏自《Python源码剖析》正文第一页。 也即: 当在其他class中使用 时,node是在堆中的。相当于在C中调用malloc。 不仅仅是对于像Node这样的class 的对象是存在于堆中的,在Python中就连int类型的数值同样是存在...
分类:
编程语言 时间:
2014-09-02 18:17:15
阅读次数:
514
数组与指针 :数组在传递参数里,作用一样: array 都是一个指针,接收数组的首地址(int array[],int n )( int * array, int n )指针和数组可以等价转换array[i] ========= *(array+i)二维数组传参 :(int a[][], int R...
分类:
其他好文 时间:
2014-09-02 17:31:28
阅读次数:
300
windows里命令行参数只有可执行程序的时候,可以把文件拖拽到可执行程序上面相当于 把文件名当参数传递了变量作用域:#include #include int main(){ int i = 10; while( i-- ) //这个i是上面的i,所以只会输出10次 { int i = 0;//去...
分类:
其他好文 时间:
2014-09-02 15:42:15
阅读次数:
142
堆(Heap)栈(Stack)1、内存分配方面: 堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。 栈:由编译器(Compiler)自动分配释放,.....
分类:
其他好文 时间:
2014-09-02 15:36:44
阅读次数:
230
问题的提出
pro1.c
#include
#include
main()
{
int *a=malloc(4);
*a=9999;
//*(a+1)=1000;
//*(a+1000)=10000;
printf("%p\n",a);
while(1);
}
gcc pro1.c -omain1 运行 main1 结果:0x8a01008
pro...
分类:
系统相关 时间:
2014-09-01 22:45:43
阅读次数:
275
1.如果返回一个基本类型的变量,比如:inta;a=5;returna;那么就会a的一个拷贝,即5返回,然后a就被销毁了。尽管a被销毁了,但它的副本5还是成功地返回了,所以这样做没有问题。2.但是对于非动态分配(new/malloc)得到的指针,像1那么做就会有问题,比如在某个函数内部:inta[]...
分类:
其他好文 时间:
2014-08-31 00:24:00
阅读次数:
319
1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/...
分类:
其他好文 时间:
2014-08-30 23:01:10
阅读次数:
193
我们都知道,使用malloc/calloc等分配内存的函数时,一定要检查其返回值是否为“空指针”(亦即检查分配内存的操作是否成功),这是良好的编程习惯,也是编写可靠程序所必需的。但是,如果你简单地把这一招应用到new上,那可就不一定正确了。我经常看到类似这样的代码:int*p=newint[SIZE...
分类:
其他好文 时间:
2014-08-30 21:37:10
阅读次数:
305