草庐IT

memory-profiling

全部标签

c++ - C++ 示例 "Memory barrier"

这个问题在这里已经有了答案:C++MemoryBarriersforAtomics(2个答案)关闭9年前。我正在阅读这个关于volatile关键字的问题的答案:https://stackoverflow.com/a/2485177/997112那个人说:Thesolutiontopreventingreorderingistouseamemorybarrier,whichindicatesbothtothecompilerandtheCPUthatnomemoryaccessmaybereorderedacrossthispoint.Placingsuchbarriersaroundo

c++ - boost::interprocess::managed_shared_memory 在不同版本的 boost 之间的兼容性

是否有明确的兼容性保证boost::interprocess::managed_shared_memory可以跨不同的boost版本工作?我打算用它在多个进程之间共享一个整数或十(这实际上将充当它们都读取和写入的一段数据的修订号)。这些进程是单独发布的,并且偶尔会终止使用。问题是:我是否会因为1.51中的managed_shared_memory无法与1.44中的managed_shared_memory进行对话而将自己永远锁定在给定的boost版本上? 最佳答案 根据BoostFAQ:HowcantheBoostlibraries

c++ - 如何调试或修复涉及 boost::interprocess managed_shared_memory 的无限循环和堆损坏问题?

我收到以下“第一次机会异常”消息,该消息来self编写的DLL,该DLL在我未编写的可执行文件中运行。也就是说,DLL是一个插件。第一次触发此异常时,尝试打开共享内存映射文件失败。如果我忽略第一次机会异常而只是运行,应用程序最终会卡住或崩溃。First-chanceexceptionat0x76a7c41finnotmyexe.exe:MicrosoftC++exception:boost::interprocess::interprocess_exceptionatmemorylocation0x002bc644..几个小时后,它似乎是由一段无限循环的代码块引起的,直到预期的异常条件

带有栅栏和获取/释放的 C++ memory_order

我有以下C++2011代码:std::atomicx,y;std::atomicz;voidf(){x.store(true,std::memory_order_relaxed);std::atomic_thread_fence(std::memory_order_release);y.store(true,std::memory_order_relaxed);}voidg(){while(!y.load(std::memory_order_relaxed)){}std::atomic_thread_fence(std::memory_order_acquire);if(x.load(

c++ - 为什么 RegisterClass 因 ERROR_NOT_ENOUGH_MEMORY 而失败?

很快,我的问题是,当有大量可用内存时,为什么WinAPIRegisterClass会失败并返回ERROR_NOT_ENOUGH_MEMORY,我该怎么做才能防止它发生?背景:我正在开发一个应用程序(WinSCPFTP/SFTP客户端),许多人使用它来自动传输文件。有些人每天每分钟都在通过Windows调度程序运行它。我收到很多报告,在运行一定次数后应用程序停止工作。触发问题的运行次数似乎并不准确,但在几万到几十万之间。此外,问题似乎仅在Windows调度程序下运行时出现,而不是在常规Windowssession中运行时出现。虽然我不能100%证实这一点。此外,所有报告似乎都针对Wind

c++ - XCode 6.1 在 "Run Script"中使用 "Build Phases"时如何使用 ~/.bash_profile 环境变量?

我有一个用于C++的跨平台单元测试框架。为了在XCode6.1中构建和运行测试,我需要运行一个python脚本作为预构建脚本的一部分。由于我对多个项目使用相同的单元测试框架,所以我认为在我的~/.bash_profile中使用环境变量来指向python脚本所需的资源会很棒。但似乎XCode6.1在构建过程中运行脚本之前没有加载bash_profile。是否有使用bash_profile的替代方案?也许我可以将我的环境变量添加到XCode环境变量列表中?但这似乎随着OSX的每次更新而改变。我似乎无法弄清楚在哪里可以为XCode6.1添加环境变量。 最佳答案

c++ - Profiler 不显示我的代码

我在VisualStudio2012中使用探查器来查找代码中的瓶颈,但我发现在将项目移动到另一台计算机后,探查器根本不显示我的代码,而只显示模块名称:有一个TrineaClient,它是我项目的模块,但它没有显示其功能,因为探查器不了解它们。但到目前为止,我对此没有任何问题。我知道它可能找不到我正在使用的某些系统模块或库的符号,但到目前为止它总是处理我自己的代码。这种行为的原因可能是什么? 最佳答案 (根据您使用的是Windows8.1这一事实进行更新)Windows8.1对VS探查器在收集信息时使用的底层系统进行了一些更改。如果您

c++ - ADsOpenObject() 返回 -2147024882 (0x8007000E) -> OUT_OF_MEMORY

我有一个用于身份验证的C++DLL,它会在每次登录时由Windows服务加载。在该DLL中,我使用了WindowsADSI函数ADsOpenObject()从ActiveDirectory获取用户对象。HRESULThr=ADsOpenObject(L"LDAP://rootDSE",L"username",L"password",m_dwADSFlags,IID_IDirectorySearch,(void**)&m_DSSearch);通常这多年来一直有效。但目前我得到错误代码-2147024882(0x8007000E)这是OUT_OF_MEMORY.当我重新启动使用我的DLL的

c++ - 为什么 `polymorphic_allocator` 采用 `memory_resource` 指针而不是引用?

C++17标准说:[mem.poly.allocator.ctor]polymorphic_allocator(memory_resource*r);Requires:risnon-null.Effects:Setsmemory_­rsrctor.Throws:Nothing.[ Note:Thisconstructorprovidesanimplicitconversionfrommemory_­resource*.— endnote ]接受memory_resource*有什么意义?而不是memory_resource&如果“需要”子句提到r必须是非空的?Bloomberg¹风格指

c++ - 网络游戏作弊: Is it possible to prevent one Win32 process from inspecting/manipulating another's memory?

我玩在线游戏《魔兽世界》,该游戏受到自动机器人的困扰,这些机器人检查游戏的分配内存以读取游戏/玩家/世界状态信息,这些信息用于机械地玩游戏。他们有时也会直接写入游戏的内存本身,但据我所知,更复杂的不会。该游戏的供应商BlizzardEntertainment有一个名为Warden的单独应用程序,它应该可以检测和禁用类似的黑客和作弊行为,但它并不能捕获所有内容。是否可以制作一个Windows应用程序,让您是唯一一个可以将您读入内存的内容读入内存的应用程序?在数百万台机器上运行的大型C++应用程序上实现这种做法是否实用? 最佳答案 做不