日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

13运行库实现

發布時間:2025/1/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 13运行库实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第十三章 運行庫實現<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

?

1????C語言庫

基本功能及原則

(1)?????? 具有自己的入口???????? mini_crt_entry (2)?????? 進程退出函數???????????? exit (3)?????? 堆操作?????????????????????????? malloc (4)?????? 文件操作?????????????????????? fopen? fread? fwrite? fclose? fseek (5)?????? 格式化字符串和輸出操作? printf? sprint (6)?????? 注冊函數?????????????????????? atexit

?

入口函數

Void mini_crt_entry(void) { ?????????? 1? 獲得argcargv; ?????????? 2? 堆初始化; ?????????? 3? IO初始化; ?????????? 3.5 do_global_ctors();?????????????? //構造函數 ?????????? 4? main(argc, argv); ?????????? 5? exit(); }

?

堆的實現

實現系統調用brk,在堆初始化是申請固定的空間,用鏈表形式管理。每個節點都有一個頭。并實現mallocfree函數

?

IO與文件操作

各個文件操作都是對系統調用的簡單封裝

?

字符串相關操作

格式化字符串 printf

?

2????如何使用Mini CRT

$gcc? -c????? -fno-builtin??????? -fnostdlib????????? -fno-stack-protector???????? \ ?????????? entry.c????? malloc.c?? stdio.c????? string.c??? printf.c $ar??? -rs??? minicrt.a ?????????? malloc.o?? printf.o???? stdio.o????? string.o? (entry.o)

?

$gcc? -c????? –ggdb?????? -fno-builtin??????? -fnostdlib????????? -fno-stack-protector???????? test.c $ld???? -static?????? -e????? mini_crt_entry???????? entry.o???? test.o?????? minicrt.a? -o????? test

?

3????C++運行庫

一般C++運行庫都是依賴于C運行庫的,它們僅僅包含C++的一些特性支持。 newdelete

支持利用C庫的堆操作實現

?

C++全局構造與析構

構造函數主要實現的的是依靠特殊的段合并后形成構造函數數組,而析構函數則依賴atexit函數。 由于Linux的全局構造還需要crtbegincrtend兩個部分,所以也需要crtbegin.cppcrtend.cpp兩個文件。 析構部分則需要實現atexit函數,并在exit函數中實現析構。

?

streamstring

?

4????如何使用C++運行庫

轉載于:https://blog.51cto.com/lindo/386449

總結

以上是生活随笔為你收集整理的13运行库实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。