最近在研究php自定义函数的实现,其中php自定义函数在传递参数时,是放到人为的一个栈中,这个跟写C程序时,参数入栈的这个栈还不一样,其中延伸到了 malloc 以及free有人说在free(p)后,要将p设置为NULL, 在查找了一翻资料后,大体上弄明白了是怎么回事参考资料:http://bbs....
分类:
编程语言 时间:
2014-08-03 17:51:55
阅读次数:
225
一,retain, copy, assign区别1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b。此时a 和b指向同一块内存,请问当a不再需要这块内存,能否直接释放它?答案是否定的,因为a并不知道b是否还在...
分类:
移动开发 时间:
2014-08-02 23:12:04
阅读次数:
349
struct Node{ int data; Node *next;};//创建链表 输入为数字,如果输入0 链表结束(0不计)Node *creat(){ Node *head,*p,*s; int x,cycle=1; head=(Node *)malloc(siz...
分类:
其他好文 时间:
2014-08-02 20:50:24
阅读次数:
292
两者都是在堆上分配内存区。malloc()是C运行库中的动态内存分配函数,WINDOWS程序基本不使用了,因为它比WINDOWS内存分配函数少了一些特性,如,整理内存。GlobalAlloc()是16位WINDOWS程序使用的API,返回一个内存句柄,在实际需要使用时,用GlobalLock().....
分类:
其他好文 时间:
2014-08-02 17:53:34
阅读次数:
227
动态分配内存:头文件 stdlib.h
malloc:分配内存
calloc:分配内存,并清零
realloc:调整已分配的内存块大小
示例:
int *p=(int *) malloc(3*sizeof(int));//分配内存,成功返回首地址,失败返回NULL
free(p);p=NULL;//释放分配的内存,并修改指...
分类:
其他好文 时间:
2014-08-01 19:46:22
阅读次数:
240
??
1.在main方法里面直接定义一个非常大的数组的时候,可能会出现栈溢出:错误代码演示:
#include
#include
void
main()
{
int
a[1024 * 1024];
int
num = 100;
system("pause");
}
错误截图:
2.在定义数...
分类:
其他好文 时间:
2014-08-01 02:26:11
阅读次数:
456
#include
#include
main()
{
char *p,*q;
p=(char*)malloc(sizeof(char)*20);
q=p;
scanf("%s%s",p,q);
printf("%s%s\n",p,q);
}...
分类:
其他好文 时间:
2014-07-31 20:55:37
阅读次数:
167
我一直非常关注Linux系统中的内存管理,想了解这一机制的工作过程,断断续续看了几年书,觉得有时候有收获,但是过一段时间就忘记了,让人觉得这个子系统很庞大,无从下手。最近看了很多书,对以malloc为切入点的linux内存管理有了一定的认识,在这里首先将需要的参考资料列出来,稍后手动实现的时候再补上。主要的参考资料有:
《深入理解Linux内核》:关于X86的Linux的段页式存储机制(第二章内...
分类:
其他好文 时间:
2014-07-31 17:09:26
阅读次数:
178
由于代码中使用了malloc函数和字符串函数,编译时出现错误
warning: incompatible implicit declaration of built-in function ‘malloc’
warning: incompatible implicit declaration of built-in function ‘bzero’
warning: incompatib...
分类:
其他好文 时间:
2014-07-31 16:59:17
阅读次数:
554
一种错误的写法:int * x = (int *)malloc(5 * sizeof(int));int * y = (int *)malloc(5 * sizeof(int));y = x;没有必要为y开辟内存,因为y在开辟内存时 y内存储的地址时开辟的内存的位置, 但是后面又把x的值赋给了y, ...
分类:
编程语言 时间:
2014-07-31 16:16:26
阅读次数:
224