如何用C语言编写动态分配内存的函数

不要系统带的内存动态分配函数,要自己编写的

#include <stdio.h>

void main()
{
int *p;
p=new int;
*p=3;
printf("%d\n",*p);
delete p;
}

追问

c语言没有new delete 操作符吧

追答#include <stdio.h>
#include <stdlib.h>
void main()
{
    int *p;
    p=(int*)malloc(sizeof(int));
    *p=3;
    printf("%d\n",*p);
    free(p);
}

追问

不好意思兄弟,其实我正是想问malloc(),free()函数是如何实现的

追答

malloc和用法基本一致,有区别的是:(1)malloc先指明指针类型(如这里int *),同时调用函数,返回一个不定型的指针类型(这里是int *)。new操作先声明一个指定的类型(这里是int*),然后才能调用操作符,返货一个指定的指针类型这里是(int*)。(2)new操作符只需要指定划分空间的个数,不需要指定单个空间的大小,比如new int[3],应为前面定义指针的时候,已经能够判断单个空间的大小。malloc需要指定单个空间的大小(使用sizeof操作符获得)和空间的个数,比如sizeof(int)*3。

delete 和 free参数类型都一样,释放已经分配的空间,写的形式不一样而已,delete p, free(p)。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-04
建议看 数据结构,清华大学出版社的
相似回答