gpt4 book ai didi

c++ - "new"在不使用运行时库时有什么用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:35:58 25 4
gpt4 key购买 nike

例如,在 C 中,没有运行时库 (libc) 就没有 malloc()。我认为,例如,在 Windows 上 malloc 只是调用 HeapAlloc()。但是在C++中,分配动态内存的方式实际上是语言的一个关键字;与“删除”相同。因此,如果您在没有运行时库的情况下编译代码,“new”将如何工作?

谢谢

最佳答案

new操作符如果不重载,一般和malloc函数是一样的。 它依赖于平台。唯一的区别是它自动管理数据的初始化。

编辑:

在 Linux 上,没有标准库就无法编译。您收到以下消息:

phong@colinux ~ $ g++ -nostdlib test.cpp
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 00000000080480d8
/tmp/ccOV36hW.o: In function `main':
test.cpp:(.text+0x11): undefined reference to `operator new(unsigned int)'
test.cpp:(.text+0x21): undefined reference to `operator delete(void*)'
/tmp/ccOV36hW.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

关于c++ - "new"在不使用运行时库时有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4404955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com