小编oko*_*vko的帖子

C++ 11委托ctors的性能是否比C++ 03 ctors调用init函数更差?

[这个问题经过高度编辑; 请原谅,我已将编辑内容转移到下面的答案]

来自维基百科(包括子文章)在C++ 11上:

这个[ 新的委托构造函数 ]有一个警告:C++ 03认为在构造函数完成执行时要构造一个对象,但是C++ 11在构造函数完成执行后会考虑构造一个对象.由于将允许多个构造函数执行,这意味着每个委托构造函数将在其自己类型的完全构造的对象上执行.派生类构造函数将在其基类中的所有委托完成后执行."

这是否意味着委托链为ctor委托链中的每个链接构造一个唯一的临时对象?为避免简单的init函数定义而产生的这种开销不值得额外开销.

免责声明:我问过这个问题,因为我是学生,但到目前为止答案都是不正确的,并证明缺乏研究和/或对参考研究的理解.我对此感到有些沮丧,因此我的编辑和评论一直匆匆而且写得不好,主要是通过智能手机.请原谅这个; 我希望我在下面的答案中将其最小化,并且我已经了解到我需要在评论中保持谨慎,完整和明确.

c++ performance constructor c++11 delegating-constructor

10
推荐指数
2
解决办法
418
查看次数

LLDB 是否与 gdbserver 兼容(用于调试交叉编译的代码?)

我是一名 CS 学生,刚刚学习mips了课堂基础知识(Patterson & Hennessy + spim),我正在尝试找到一种mips调试解决方案,允许在调试过程中执行任意指令。

尝试使用 gdb(所以你知道为什么不建议这样做)

推荐的mips交叉编译工具链是qemuand gdb,参见mips.com 文档和相关问答

gdbcompile code命令不支持mips-linux-gnu-gcc,据我所知,请参阅gdb 文档(“重定位目标文件”)和相关的Q/A。我得到的错误mallocmmap和无效的内存错误(显示的东西是想错了与即席连接gdb尝试使用时执行)compile codemips-linux-gnu-gcc,甚至过滤出硬编码的编译参数后mips-linux-gnu-gcc不承认。

实际问题

lldb有一个类似的命令expression,请参阅lldb 文档,我有兴趣lldbqemu. 该expression命令也依赖于clang而不是gcc,但在 clang 中交叉编译相对简单(clang -target mips-linux-gnu“正常工作”)。唯一的问题是qemu-mips -g …

mips lldb

8
推荐指数
1
解决办法
875
查看次数

如何检查是否安装了libc ++?

我正在从源头构建一些东西.我的系统的gcc和stdlibc ++太旧了,但我可以使用一个clang构建.默认情况下,clang使用stdlibc ++,但可以选择安装libc ++以供clang使用.

检查libc ++是否与clang一起安装的最佳方法是什么?

c++ cmake clang libc++

5
推荐指数
2
解决办法
1787
查看次数

如何在 OSX 上安装和配置 MSMTP?

按照ArchLinux上的说明进行安装和配置msmtp不起作用。文件/etc/ssl/certs/ca-certificates.crt或类似内容丢失,尝试使用它msmtp发送邮件将导致证书错误。

OSX High Sierra 的替代配置是什么,以便msmtp可以像教程中那样用于发送邮件?

注意:我前段时间自己回答了这个问题,并认为它很有用且值得分享,所以我创建了这个问题和答案。例如,如果对证书和指纹有更多了解的人可以提供更高质量的答案,并提供有关使用证书或指纹之间的差异的更多详细信息和背景信息,那就太好了。

几年后请注意:我知道这是一个自我回答的问答,但它有 1000 次浏览,所以也许记得给有用的问答点赞。

macos msmtp macos-high-sierra

5
推荐指数
2
解决办法
2201
查看次数

如何交互式调试 MIPS

我正在学习计算机组织和组装课程。

在课堂上,我们正在学习MIPS。这是为了介绍基本概念,例如管道。我们正在为课堂编写一些简单的 MIPS 程序。

我习惯使用gdb进行调试和学习,我们上课使用的调试器是SPIM。SPIM 很糟糕。它允许我单步执行程序,但不允许我在任意执行点交互式执行 MIPS 指令。我立即厌倦了必须退出 SPIM,编辑源代码,然后再次运行 SPIM,导航到所需的执行点,却发现我必须再次执行此操作,因为我又犯了另一个错误。

或者也许我错了,SPIM 确实允许这样做。我的老师说不支持这个功能,所以我就照他说的去做。我用谷歌搜索了一下,没有找到解决方法。

我尝试过在谷歌上搜索交互式 MIPS 调试器(例如 gdb),但没有找到。我知道 gdb 可以调试 MIPS 程序,但我没有 MIPS 机器来运行 MIPS 程序。

我在 VMware 中运行 Ubuntu。如何使用 gdb 或其他方式交互式调试 MIPS 程序?

编辑:在Mips.com上找到了一些关于他们推荐的 Linux 工具链的参考资料。

gdb mips

5
推荐指数
1
解决办法
5141
查看次数

静态变量是否会阻碍数据缓存?

C++中的优化软件(第7.1节),

静态数据的优点是可以在程序启动之前将其初始化为所需的值.缺点是存储空间在整个程序执行过程中被占用,即使该变量仅用于程序的一小部分.这使得数据缓存效率降低.

static除此之外的用法是在静态存储持续时间的确切情况下适用于C和C++.

任何人都可以了解为什么(或者是否)数据缓存对静态持续时间变量的效率较低?这是一个具体的比较:

void foo() {
  static int static_arr[] = {/**/};
}
void bar() {
  int local_arr[] = {/**/};
}
Run Code Online (Sandbox Code Playgroud)

我没有看到任何理由为什么静态数据的缓存不同于任何其他类型的数据.在给定的示例中,我认为foo会更快,因为执行堆栈不必加载static_arr,而在bar执行堆栈中必须加载local_arr.在任何一种情况下,如果重复调用这些函数static_arr,local_arr则会缓存这两个函数.我错了吗?

c c++ performance caching

3
推荐指数
2
解决办法
215
查看次数