草庐IT

objc_setProperty_atomic_copy

全部标签

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

msvcp140_atomic_wait.dll文件丢失如何解决?

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个msvcp140_atomic_wait.dll文件进行安装(前提是找到适合的版本),当我们执行某一个.exe程序时,相应的DLL文件就会被调用,因此安装好之后就能重新打开你的软件或游戏了.那么出现msvcp140_atomic_wait.dll丢失要怎么解决? 一、手动从本站下载dll文件1、从下面列表下载msvcp140_atomic_wait.dll文件32位文件:msvcp140_atomic_w

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++ - "pseudo-atomic"C++ 操作

所以我知道在C++中没有什么是原子的。但我试图弄清楚是否有任何我可以做出的“伪原子”假设。原因是我想避免在一些我只需要非常弱的保证的简单情况下使用互斥锁。1)假设我已经全局定义了volatileboolb,它最初我设置为true。然后我启动一个执行循环的线程while(b)doSomething();同时,在另一个线程中,我执行b=true。我可以假设第一个线程会继续执行吗?换句话说,如果b开始时为真,并且第一个线程在第二个线程分配b=true的同时检查b的值,我是否可以假设第一个线程将b的值读取为真?或者是否有可能在赋值b=true的某个中间点,b的值可能被读取为false?2)现在

c++ - "pseudo-atomic"C++ 操作

所以我知道在C++中没有什么是原子的。但我试图弄清楚是否有任何我可以做出的“伪原子”假设。原因是我想避免在一些我只需要非常弱的保证的简单情况下使用互斥锁。1)假设我已经全局定义了volatileboolb,它最初我设置为true。然后我启动一个执行循环的线程while(b)doSomething();同时,在另一个线程中,我执行b=true。我可以假设第一个线程会继续执行吗?换句话说,如果b开始时为真,并且第一个线程在第二个线程分配b=true的同时检查b的值,我是否可以假设第一个线程将b的值读取为真?或者是否有可能在赋值b=true的某个中间点,b的值可能被读取为false?2)现在

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

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

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

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

C++ 标准 : can relaxed atomic stores be lifted above a mutex lock?

标准中是否有任何措辞保证对原子的宽松存储不会被提升到互斥锁的锁定之上?如果没有,是否有任何措辞明确表示编译器或CPU这样做是符合犹太教规的?例如,采用以下程序(它可能使用acq/rel来处理foo_has_been_set并避免锁定,和/或使foo本身原子化。它是这样写的来说明这个问题。)std::mutexmu;intfoo=0;//Guardedbymustd::atomicfoo_has_been_set{false};voidSetFoo(){mu.lock();foo=1;foo_has_been_set.store(true,std::memory_order_relaxe