草庐IT

C++ 对象作为返回值 : copy or reference?

我想测试当函数的返回值为对象时C++的行为。我做了这个小例子来观察分配了多少字节,并确定编译器是复制对象(比如当对象作为参数传递时)还是返回某种引用。但是,我无法运行这个非常简单的程序,我也不知道为什么。错误说:“调试断言失败!表达式:BLOCK_TYPE_IS_INVALID”在某些dbgdel.cpp文件中。Project是一个win32控制台应用程序。但我很确定这段代码有问题。classCtest1{public:Ctest1(void);~Ctest1(void);char*classSpace;};Ctest1::Ctest1(void){classSpace=newchar

C++ 对象作为返回值 : copy or reference?

我想测试当函数的返回值为对象时C++的行为。我做了这个小例子来观察分配了多少字节,并确定编译器是复制对象(比如当对象作为参数传递时)还是返回某种引用。但是,我无法运行这个非常简单的程序,我也不知道为什么。错误说:“调试断言失败!表达式:BLOCK_TYPE_IS_INVALID”在某些dbgdel.cpp文件中。Project是一个win32控制台应用程序。但我很确定这段代码有问题。classCtest1{public:Ctest1(void);~Ctest1(void);char*classSpace;};Ctest1::Ctest1(void){classSpace=newchar

c - memcpy 的内部实现是如何工作的?

标准C函数“memcpy”如何工作?它必须将(大)blockRAM复制到RAM中的另一个区域。因为我知道你不能在汇编中直接从RAM移动到RAM(使用mov指令)所以我猜它在复制时使用CPU寄存器作为中间存储器?但它是如何复制的?按block(如何按block复制?),按单个字节(char)或它们拥有的最大数据类型(以longlongdouble复制-在我的系统上是12个字节)。编辑:好吧,显然你可以直接将数据从RAM移动到RAM,我不是装配专家,我所学到的关于装配的所有知识都来自该文档(X86assemblyguide),其中提到关于不能从RAM移动到RAM的mov指令的部分。显然这不

c - memcpy 的内部实现是如何工作的?

标准C函数“memcpy”如何工作?它必须将(大)blockRAM复制到RAM中的另一个区域。因为我知道你不能在汇编中直接从RAM移动到RAM(使用mov指令)所以我猜它在复制时使用CPU寄存器作为中间存储器?但它是如何复制的?按block(如何按block复制?),按单个字节(char)或它们拥有的最大数据类型(以longlongdouble复制-在我的系统上是12个字节)。编辑:好吧,显然你可以直接将数据从RAM移动到RAM,我不是装配专家,我所学到的关于装配的所有知识都来自该文档(X86assemblyguide),其中提到关于不能从RAM移动到RAM的mov指令的部分。显然这不

c++ - 当 move 和复制构造函数都存在时,将调用哪一个?

下面是A类,它充满了不同类型的构造函数。如果我注释move构造函数,则复制构造函数被调用两次:一次是通过值传递一个对象到函数fun,另一次是从同一个函数返回。代码片段A类{intx;public:A(){cout};intmain(){Aa;Ab;Ac;c=a.fun(b);}输出:DefaultConstructorDefaultConstructorDefaultConstructorCopyConstructorMoveConstructor但是,如果存在move构造函数,则调用它而不是复制构造函数。任何人都可以用一个很好的例子来详细说明这一点,这样我就会清楚这个概念。非常感谢您

c++ - 当 move 和复制构造函数都存在时,将调用哪一个?

下面是A类,它充满了不同类型的构造函数。如果我注释move构造函数,则复制构造函数被调用两次:一次是通过值传递一个对象到函数fun,另一次是从同一个函数返回。代码片段A类{intx;public:A(){cout};intmain(){Aa;Ab;Ac;c=a.fun(b);}输出:DefaultConstructorDefaultConstructorDefaultConstructorCopyConstructorMoveConstructor但是,如果存在move构造函数,则调用它而不是复制构造函数。任何人都可以用一个很好的例子来详细说明这一点,这样我就会清楚这个概念。非常感谢您

c++ - 节省内存的 C++ 字符串(interning、ropes、copy-on-write 等)

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭6年前。Improvethisquestion我的应用程序存在内存问题,包括复制大量字符串、使用与大量哈希表中的键相同的字符串等。我正在为我的字符串寻找一个基类,以使其非常高效。我希望:字符串实习(相同值的多个字符串使用相同的内存),写时复制(我认为这在几乎所有std::string实现中都是免费的),带有绳索的东西将是一个奖励(对于O(1)-ish连接)。我的平台是Linux上的g++(但这不太重要

c++ - 节省内存的 C++ 字符串(interning、ropes、copy-on-write 等)

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭6年前。Improvethisquestion我的应用程序存在内存问题,包括复制大量字符串、使用与大量哈希表中的键相同的字符串等。我正在为我的字符串寻找一个基类,以使其非常高效。我希望:字符串实习(相同值的多个字符串使用相同的内存),写时复制(我认为这在几乎所有std::string实现中都是免费的),带有绳索的东西将是一个奖励(对于O(1)-ish连接)。我的平台是Linux上的g++(但这不太重要

c++ - C 和 C++ 静态链接 : just a copy?

当有人静态链接一个.lib时,链接器会将lib的全部内容复制到最终的可执行文件中还是只复制目标文件中使用的函数? 最佳答案 整个图书馆?--没有。只是你调用的函数?--没有。还有别的吗?--是的。它肯定不会扔到整个库中。但它也不一定只包括“目标文件中使用的函数”。链接器将创建一个递归构建的列表,列出库中的哪些对象模块满足您的undefinedsymbol。然后,它将包含这些对象模块中的每一个。通常,一个给定的对象模块将包含多个函数,如果其中一些没有被您做调用的函数调用,您将获得一些函数(和数据对象))你不需要的。

c++ - C 和 C++ 静态链接 : just a copy?

当有人静态链接一个.lib时,链接器会将lib的全部内容复制到最终的可执行文件中还是只复制目标文件中使用的函数? 最佳答案 整个图书馆?--没有。只是你调用的函数?--没有。还有别的吗?--是的。它肯定不会扔到整个库中。但它也不一定只包括“目标文件中使用的函数”。链接器将创建一个递归构建的列表,列出库中的哪些对象模块满足您的undefinedsymbol。然后,它将包含这些对象模块中的每一个。通常,一个给定的对象模块将包含多个函数,如果其中一些没有被您做调用的函数调用,您将获得一些函数(和数据对象))你不需要的。