c++学习6
2016-08-23 20:33
288 查看
关于动态内存分配的两种问题:
首先C语言是因为数组的存储范围有限,如果我们数据太大就要自己申请内存,
c++是new一个对象,通过类的特性去开扩内存
C语言的释放与扩充:
例:
void main()
{
int a;
scanf("%d",&a);
int *p = (int *)malloc(sizeof(int)*a);
for (int i = 0; i < a; i++)
{
*(p + i) = i;
printf("%d,%p\n", *(p + i), p + i);
}
while (1)
{
Sleep(1000);
int *p = (void *)malloc(1024 * 1024 * 10);
Sleep(2000);
free(p);
p = NULL;
}
system("pause");
}
通过free对指针进行释放内存,再对数组赋值空,完成释放
c++的释放与扩充:
例:
#include<iostream>
using namespace std;
//c++释放内存和扩展内存
class Hero
{
public:
Hero()
{
cout << " Hi" << endl;
}
~Hero()
{
cout << " world " << endl;
}
void show()
{
cout << " hello " << endl;
}
};
int main()
{
Hero *p = (Hero *)malloc(sizeof(Hero));
p->show;
delete p;
p = NULL;
p->show;
system("pause");
return 0;
}
c++是直接delete某个指针,并且对指针赋空值,完成释放。
首先C语言是因为数组的存储范围有限,如果我们数据太大就要自己申请内存,
c++是new一个对象,通过类的特性去开扩内存
C语言的释放与扩充:
例:
void main()
{
int a;
scanf("%d",&a);
int *p = (int *)malloc(sizeof(int)*a);
for (int i = 0; i < a; i++)
{
*(p + i) = i;
printf("%d,%p\n", *(p + i), p + i);
}
while (1)
{
Sleep(1000);
int *p = (void *)malloc(1024 * 1024 * 10);
Sleep(2000);
free(p);
p = NULL;
}
system("pause");
}
通过free对指针进行释放内存,再对数组赋值空,完成释放
c++的释放与扩充:
例:
#include<iostream>
using namespace std;
//c++释放内存和扩展内存
class Hero
{
public:
Hero()
{
cout << " Hi" << endl;
}
~Hero()
{
cout << " world " << endl;
}
void show()
{
cout << " hello " << endl;
}
};
int main()
{
Hero *p = (Hero *)malloc(sizeof(Hero));
p->show;
delete p;
p = NULL;
p->show;
system("pause");
return 0;
}
c++是直接delete某个指针,并且对指针赋空值,完成释放。