zoukankan      html  css  js  c++  java
  • 构造函数与new的汇编实现

    this指针,通常是通过ecx传递;gcc是通过堆栈传递的,是最后一个被压栈。
    传递this指针是为了访问成员变量。除了虚函数,所有成员函数被编译之后都是全局函数。
    mov eax,[ecx] ; 将第一个成员赋给eax
    add eax,[ecx+4] ; 再用第一个成员函数的值加上4,可能就是第二个成员的值

    new操作符:
    编译器将new与delete转换成普通函数。new有以下特点:
    1. 只有一个参数(要分配的字节数)
    2. 返回值会赋给this指针
    3. 会判断返回值是否为空

    delete操作符:
    与大多数函数差不多,但是最终会调用Free这样的函数。

    构造函数:
    在分配内存成功以后,才会被调用。一般紧跟着调用构造函数后是分配失败的跳转代码,this复位0

    启动函数:
    在链接的时候由CRTSRCcrt***.c文件进行链接,由它当中的代码调用main或者WinMain函数。
    静态链接:crt0.c
    动态链接:crtexe.c
    控制台:wincmdln.c

  • 相关阅读:
    为什么要对url进行encode
    活在当下
    Linux Shell 文本处理工具
    Servlet、Servlet容器等内容讲解
    Java编程中的一些常见问题汇总
    创建文件目录
    ubuntu
    iptables
    mysqldump导入导出
    pt-table-sync
  • 原文地址:https://www.cnblogs.com/findumars/p/3322066.html
Copyright © 2011-2022 走看看