C5.cpp

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

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;;

}