用户在申请内存空间的时候,没有足够的空间供其使用
用户在申请内存空间后,无法释放已申请的内存空间
一次的内存泄露可能啥问题,但是多次的内存泄露可能最终会造成内存的OOM
#include <iostream>
int main() {
int* p1 = new int[4];
int* p2 = new int[4];
p1 = p2;
delete[]p1;
return 0;c
}
p1和p2同时指向了一段区域,p1之前指向的区域变成了孤立的内存了,造成了内存的泄露
#include <iostream>
class A {
int* a;
public:
A() {
this->a = new int[4];
}
int* get_a() {
return this->a;
}
};
int main() {
A s;
A* ps =&s;
free(ps);
return 0;
}
先释放的对象,对象中成员变量指向的堆区空间就成为孤立空间了,造成了内存的泄露
#include <iostream>
using namespace std;
int* text01() {
int* a = new int[4];
return a;
}
void text02() {
text01();
}
int main() {
text02();
return 0;
}
结构体的默认访问权限是public,类的默认访问权限是private
结构体的默认继承权限是public,类的默认继承权限是private
struct和public都有访问控制修饰符
sturct和public都有继承关系
struct和public都有成员函数
#include <iostream>
using namespace std;
struct A {
int d;
A() {
cout << "调用构造函数" << endl;
this->a = 1;
this->b = 1;
this->c = 1;
}
~A() {
cout << "调用析构函数" << endl;
}
void vist() {
cout <<"a:"<< this->a << endl;
}
private:
int a;
int b;
int c;
};
int main() {
A s;
s.d = 1;
cout << s.d << endl;
return 0;
}