zoukankan      html  css  js  c++  java
  • c++指向数组指针相关

    语言这个东西,一段时间不用确实容易模糊,今天看到一些面试题,发现对于数组指针这块内容又有点混淆了-。-还是记下来加深印象吧,总结以下几点,部分copy网上:

    1. 一般在分配时分配器会自动写一个日志(一般在分配使用得内存之前又一个结构),用于记录分配的大小,分配内容的sizeof等等。
    直观得想想,delete和delete[]都是传入一个void*如果不保存日志就无法知道分配时到底是分配了一个还是多个单元。所以虽然delete和delete[]不同,但是分配器在执行释放过程中都会读取这个日志,从而了解到底应该释放多少内存,但是从程序员的角度来说,既然分配了数组,就应该用delete[] 。虽然编译器不会去检查指针是否越过了分配的空间,但它确实记得到底分配了多少空间。

    2. 在操作对象是指向一个对象而非一个基本类型的指针的时候,delete的另外一个重要任务是调用析构函数(注意,这是delete和free的区别)。如果再分配了一个对象数组后使用delete而非delete[]去释放这个指针,那结果将是只有该数组的第一个元素得到了析构。

    3. 最后这条有些复杂:当操作对象是对象,且该对象有显式的析构函数时, 编译器会在数组前分配4个字节储存数组元素的个数。但事实上,无论是否有显式的析构函数,编译器都知道到底分配了多少空间。  

    Raiden Cheng
  • 相关阅读:
    专业词汇-数学-运算:四则运算
    专业词汇-数学-运算:逆运算
    专业词汇-数学:运算
    DNF Package Management-CentOS 8
    Change the HostName of CentOS 8
    CentOS8 修改SSH端口,禁用root登录,修改SSH协议
    CentOS8 Disable IPV6 and Selinux
    Ubuntu 20.04 Install SSH, Change SSH Port, Enable root
    ubuntu 20.04 重启网卡服务
    Ubuntu 20.04 Install Guest Additions for VirtualBox
  • 原文地址:https://www.cnblogs.com/raidencheng/p/1672272.html
Copyright © 2011-2022 走看看