Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。



7
编译失败,“在创建共享库时,无法使用针对.rodata.str1.8的重定位R_X86_64_32”
我正在尝试从VPS中的makefile编译此源代码,但无法正常工作。VPS是64美分的操作系统 这是完整的错误 # make gcc -c -O3 -w -DLINUX -I../SDK/amx/ ../SDK/amx/*.c g++ -c -O3 -w -DLINUX -I../SDK/amx/ ../SDK/*.cpp g++ -c -O3 -w -DLINUX -I../SDK/amx/ *.cpp g++ -O2 -fshort-wchar -shared -o "TCP_V1.so" *.o /usr/bin/ld: TCP-LINUX_V1.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC …

5
std :: array vs数组性能
如果我想建立一个非常简单的数组 int myArray[3] = {1,2,3}; 我应该std::array改用吗? std::array<int, 3> a = {{1, 2, 3}}; 与常规方法相比,使用std :: array有什么优势?表现更好吗?只是更易于处理以进行复制/访问?
84 c++  c++11  stdarray 

11
在分配的内存上不使用free()是否可以吗?
我正在学习计算机工程,并且有一些电子课程。我听到了,从我的两个教授(这些课程),有可能避免使用的free()功能(后malloc(),calloc()等),因为分配可能不会被再次使用的存储空间分配等内存。也就是说,例如,如果您分配4个字节然后释放它们,则将有4个字节的空间,可能不会再分配:您将有一个Hole。 我认为这很疯狂:您不能拥有一个非玩具程序,在其中不释放内存就在堆上分配内存。但是我没有知识来确切解释为什么它如此重要以至于每个人都malloc()必须有一个free()。 因此:在任何情况下都可以malloc()不使用而使用afree()吗?如果没有,我该如何向教授解释?

11
饱和减/加无符号字节
假设我有两个无符号字节b和x。我需要计算bsubasb - x和baddas b + x。但是,我不希望在这些操作期间发生下溢/上溢。例如(伪代码): b = 3; x = 5; bsub = b - x; // bsub must be 0, not 254 和 b = 250; x = 10; badd = b + x; // badd must be 255, not 4 这样做的明显方法包括分支: bsub = b - min(b, x); …

4
析构函数中的怪异枚举
目前,我正在阅读的源代码Protocol Buffer,并且在这里找到了一个奇怪的enum代码 ~scoped_ptr() { enum { type_must_be_complete = sizeof(C) }; delete ptr_; } void reset(C* p = NULL) { if (p != ptr_) { enum { type_must_be_complete = sizeof(C) }; delete ptr_; ptr_ = p; } } 为什么在enum { type_must_be_complete = sizeof(C) };这里定义?这有什么用途?
83 c++  enums 

9
从C ++迁移到C
用C ++编码几年后,最近在嵌入式领域为我提供了C语言的作业编码。 抛开在嵌入式领域解雇C ++是对还是错的问题,C ++有一些功能/习惯用法,我会想念很多。仅举几个: 通用的类型安全的数据结构(使用模板)。 RAII。特别是在具有多个返回点的函数中,例如,不必记住在每个返回点上释放互斥量。 析构函数一般。即,您为MyClass编写了一次d'tor,然后,如果MyClass实例是MyOtherClass的成员,则MyOtherClass不必显式取消初始化MyClass实例-它的d'tor会自动调用。 命名空间。 从C ++到C的经历是什么? 您为自己喜欢的C ++功能/习惯找到了哪些C替代品?您是否发现了希望C ++具有的C功能?
83 c++  c 

5
“ pragma”一词从何而来?
所以我知道什么是杂用语,它的用途是什么,但是单词本身的含义是什么?我已经在代码中使用了很多次,但我从未真正知道这个词的实际含义或代表什么。
83 c++  c  terminology  pragma 

1
boost :: function和boost :: bind如何工作
我不喜欢魔术盒散布在我的所有代码中...这两个类究竟如何工作,以使基本上任何函数都可以映射到函数对象,即使function <>的参数设置与传递给一个im的参数完全不同 boost::bind 它甚至有不同的调用约定有效(即成员方法都是__thiscallVC之下,但“正常”的功能,通常是__cdecl或__stdcall为那些需要与兼容C.

9
x << 1或x << 10哪个更快?
我发誓,我不想优化任何事情,我只是出于好奇而问这个问题。我知道,在大多数硬件有位移(例如的组件的命令shl,shr),它是一个命令。但这有多少关系(纳秒级或CPU精巧度)重要?换句话说,以下任一处理器在任何CPU上的运行速度都更快吗? x &lt;&lt; 1; 和 x &lt;&lt; 10; 而且请不要讨厌我这个问题。:)
83 c++  c  performance  cpu  low-level 

4
如何传递std :: unique_ptr?
我正在尝试使用C ++ 11 unique_ptr;我正在替换我的一个项目中的多态原始指针,该项目属于一个类,但是经常通过。 我以前有类似的功能: bool func(BaseClass* ptr, int other_arg) { bool val; // plain ordinary function that does something... return val; } 但是我很快意识到我将无法切换到: bool func(std::unique_ptr&lt;BaseClass&gt; ptr, int other_arg); 因为调用者将不得不处理该函数的指针所有权,所以我不想这么做。那么,什么是解决我的问题的最佳方法? 我虽然将指针作为参考传递,像这样: bool func(const std::unique_ptr&lt;BaseClass&gt;&amp; ptr, int other_arg); 但是我这样做很不自在,首先是因为传递已经输入_ptr为引用的东西似乎不是本能,这将是引用的引用。其次,因为功能签名变得更大。第三,因为在生成的代码中,需要两个连续的指针间接访问才能到达我的变量。
83 c++  c++11  unique-ptr 

4
如何在C ++中序列化对象?
我有一个小的对象层次结构,需要通过套接字连接进行序列化和传输。我都需要序列化对象,然后根据它是什么类型对其进行反序列化。有没有一种简单的方法可以在C ++中做到这一点(就像Java中一样)? 是否有C ++序列化在线代码示例或教程? 编辑:为了清楚起见,我正在寻找将对象转换为字节数组,然后再转换为对象的方法。我可以处理套接字传输。

6
if语句vs if-else语句,哪个更快?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 改善这个问题 前几天,我和一个朋友争论了这两个片段。哪个更快,为什么? value = 5; if (condition) { value = 6; } 和: if (condition) { value = 6; } else { value = 5; } 如果value是矩阵怎么办? 注意:我知道它value = condition ? 6 : 5;存在,并且我希望它会更快,但这不是一个选择。 编辑(由于问题暂时搁置,因此被工作人员要求): 请通过考虑由主流编译器(例如g ++,clang ++,vc,mingw)以优化和非优化版本生成的x86程序集或MIPS程序集来回答。 当汇编不同时,请解释为什么版本更快以及何时发布(例如“更好,因为没有分支且分支不会出现问题”)

3
为什么CUDA固定内存这么快?
当我使用固定内存进行CUDA数据传输时,我观察到数据传输速度大大提高。在linux上,实现此目标的底层系统调用是mlock。从mlock的手册页中可以看出,锁定该页可防止将其换出: mlock()将页面锁定在地址范围内,该地址范围从addr开始并持续len个字节。当调用成功返回时,保证所有包含指定地址范围一部分的页面都驻留在RAM中; 在测试中,我的系统上有几千个可用内存,因此从没有任何风险可以换出内存页面,但我仍然观察到加速。任何人都可以解释这里到底发生了什么吗?任何见解或信息都将不胜感激。
83 c++  c  linux  cuda 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.