C5.cpp
- (1)不要使用delete来释放不是new分配的内存(2)不要使用delete来释放同一个内存块两次(3)若用new[]分配内存 ,则应该用delete[]来释放(4)若用new分配内存 ,则应该用delete来释放(5)对空指针应用delete是安全
- 不能使用sizeof运算符来确定动态数组包含的字节数
- 指针的值可以修改,但是数组名是常量不能修改
- 对数组应用sizeof得到的是数组的长度,但是对指针应用的话得到的是指针的长度,即使指针指向的是一个数组
- 对于char*类型的变量一定要使用强制类型转换符int*才能够输出地址
- 如果结构标识符是结构本身就使用句点运算符,如果是指针的话就用箭头运算符
- 管理数据内存的方式:自动(局部变量LIFO),静态(在函数外定义它或者使用的是tatic),动态(内存池==存储空间+堆------------new和delete----------在内存中不连续使得跟踪新分配内存 位置更加困难)
- 内存泄漏:用new分配完内存空间后忘记用delete释放,即使含指针的内存由于作用域规则和对象生命周期的原因而被释放,那么这片内存在以后仍然无法被使用(这有时会产生很严重的影响)
- Vector:(1)包含头文件<vector> (2)在namespace名称空间中(3)使用不同的语法来指出它存储的数据类型(4)vector使用不同的语法来指定元素数
- vector<typename>vt(n_elem)功能虽然强大但是效率很低
- array长度固定,静态的内存,效率与数组相同,需要包含头文件<array>
- array<typename,n_elem>a;n_elem不能是变量
- **用法
struct a{
int x;
}a1,a2,a3;
int main()
{
a1.x=1;
a2.x=3;
a3.x=5;
a *s[3];-----------------------------------------------------s是一个指针数组
s[0]=&a1;
s[1]=&a2;
s[2]=&a3;
a**p=s;----------------------p是指向指针数组的指针,那么*p就是结构指针
cout<<(*p)->x;;
}
你若盛开,清风自来...