自己的总结如有错误,欢迎指教,谢谢!!!
malloc
主要使用在C语言之中 在内存的堆中申请一段空间 没有赋初值 空间
里面的值是没有清零的, 使用时最好使用memset将此段空间清零。
此函数是一个指针类型的函数,返回值是一个指针指向分配的开头的位置
但是指针的类型为 void 型的,因此需要在malloc的前面加上强制的转换。
malloc 申请的空间 直接使用free释放
例如 :
int a ;
a = (int*)malloc (sizeof(int));
free a;
new
主要使用在C++语言之中 也是在堆中申请一段空间 不同的就是 在C++
语言之中,申请空间构造对象的时候,必须调用构造函数,将对象中的属性
赋初值,属性的初始值可能被赋值为零,也可能被赋值为其他的数,也可以
调用带参的构造函数。
new申请的空间不必显式的指出从new返回的指针类型,因为new知道要分配
的对象的类型。
使用new申请的空间 被调用析构函数中的delete释放
例如 :
class student
{
private:
int age;
string name;
};
int main()
{
student *s1,*s2;
s1 = new student[100]; //构造100个对象
s2 = new studnet ; //构造一个对象
delete [] s1; //删除100个对象
delete s2; //删除一个对象
}
space
主要使用在汇编语言之中 申请的空间是在代码段 本来代码段中的值是不能改变
的但是space申请的空间中的值可以改变,并且在申请空间的时候系统自动赋值为零
而且space可以使用%替换。
没有释放的的函数 也不需要释放
例如 :
dataspace space 100 //申请100个数据空间
|