如何在Eclipse和Linux上编写实现new()的代码? 我在Eclipse IDE上有这个小型C++程序,在Ubuntu 13.10(GCC和G+4.4.1): #包括 int main(){ int*a=newint(4);//我想看看这里在低级别发生了什么 std::cout
当您编写的代码显示“new”时,编译器会将其映射到对“operator new”的调用。这可以是几件事之一,具体取决于您是分配数组还是分配具有类特定运算符new的类,或者两者都是。对于如何在Eclipse和Linux上编写实现new()的代码? 我在Eclipse IDE上有这个小型C++程序,在Ubuntu 13.10(GCC和G+4.4.1): #包括 int main(){ int*a=newint(4);//我想看看这里在低级别发生了什么 std::cout,c++,linux,eclipse,runtime,malloc,C++,Linux,Eclipse,Runtime,Malloc,当您编写的代码显示“new”时,编译器会将其映射到对“operator new”的调用。这可以是几件事之一,具体取决于您是分配数组还是分配具有类特定运算符new的类,或者两者都是。对于new int(4),您正在调用: :新操作员(尺寸) 函数是C++运行时库的一部分。如果它感觉像它,它最终会转到调用 MalOC > > >代码>::运算符new < /C>是C++中的一个原语;它通常调用 MalOC (在 LBC6中实现),它最终使用由.< /P>原子化提供的系统调用(或)。 使用指令步进模
new int(4)
,您正在调用:
:新操作员(尺寸)
函数是C++运行时库的一部分。如果它感觉像它,它最终会转到调用<代码> MalOC make
和
gdb
的实际情况。回答您的问题的要点
(我在一篇评论中给出了其中的一些,之后我将其删除)
- Eclipse不是调试器(或编译器),只是一个美化的编辑器(又称编辑器)。您并不真正需要它(我发现使用
编辑器进行开发更方便;这实际上是一个观点和品味的问题)。它为emacs
提供了一个图形界面(您可以在终端中使用gdb
,将其启动为gdb
)并将其加载到您的编译器gdb-tui
(可能通过运行g++
)中。您真的需要make
一步一步地使用
编写代码。Eclipse为您提供了漂亮的按钮(但运行了gdb
过程)gdb
- 您需要调试符号和信息,以便
将
转换为某些函数,以便GCC应使用编译器的步骤
标志来编译代码-g
- 您可以轻松地编译GNULIBC库和带有调试符号的
(由您的编译器版本提供)libstdc++
- 您可能希望安装调试Debian或Ubuntu包
和libstdc++6-4.8-dbg
,它们提供了libc6-dbg
(用于libstdc++
)和g++-4.8
的调试符号和信息libc6
- 您仍然需要将相应的
和libstdc++6-4.8
包的源代码轻松地放入它们的源代码中libc6
- 您可能想使用
的gdb
命令(可能是set debug file directory
);我不知道Eclipse是否与之连接。可能直接在终端中使用/usr/lib/debug
更容易gdb
- 您应该使用来查找内存泄漏。Recent还为您提供了地址消毒剂(带有
)-fsanize=address
< > > > >代码>::运算符new < /C>是C++中的一个原语;它通常调用<代码> MalOC (在
#include <iostream>
int main() {
int* a = new int(4); //I want to see what happens here at a low-level
std::cout << "!!!Hello World!!!" << std::endl;
return 0;
}