草庐IT

堆栈iOS

全部标签

c++ - 自旋锁定堆栈和内存屏障 (C++)

我有一个实现自旋锁:classSpinlock{public:voidLock(){while(true){if(!_lock.test_and_set(std::memory_order_acquire)){return;}}}voidUnlock(){_lock.clear(std::memory_order_release);}private:std::atomic_flag_lock;};我在以下地方使用SpinLock类:classSpinlockedStack{public:SpinlockedStack():_head(nullptr){}~SpinlockedStack

c++ - Clang UBSAN 报告类型 'std::_Ios_Fmtflags' 的无效值

以下代码用clangUBSAN编译会崩溃#include#include#include#includetemplateinlinestd::stringfloatToString(Ti){printf("infloatToString\n");std::stringstreamss;ss.precision(6);ss用Clang3.6编译:$>clang++-3.6-fsanitize=undefined-fno-sanitize=float-divide-by-zero,vptr,function-fno-sanitize-recover-otesttest.cpp然后程序崩溃了

c++ - 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

使用以下设置:基于Cortex-M3的µCgcc-armcrosstoolchain使用C和C++FreeRtos7.5.3eclipse月神将Jlink与JLinkGDBServer分离CodeConfidenceFreeRtosdebugplugin使用JLinkGDBServer和eclipse作为调试前端,在单步执行我的代码时,我总是有一个很好的堆栈跟踪。使用CodeConfidencefreertos工具(eclipse插件)时,我还看到了当前未运行的所有线程的堆栈跟踪(没有该插件,我只看到事件线程的堆栈跟踪)。到目前为止一切顺利。但是现在,当我的应用程序陷入硬故障时,堆栈跟

套接字的多种可选项(修改IO缓冲区大小及TCP_NODELAY)

标题套接字的多种可选项我们进行套接字编程时往往只关注数据通信,而忽略了套接字具有的不同特性。但是,理解这些特性并根据实际需要进行更改也十分重要。从上表可以看出,套接字可选项是分层的。IPPROTOIP层可选项是IP协议相关事项,IPPROTO_TCP层可选项是TCP协议相关的事项,SOL_SOCKET层是套接字相关的通用可选项。我们几乎可以针对上表中的所有可选项进行读取(Get)和设置(Set)(当然,有些可选项只能进行一种操作)。可选项的读取和设置通过如下2个函数完成。#include#includeintgetsockopt(intsock,intlevel,intoptname,void

c++ - 我的神经网络导致堆栈溢出

我很难给出一个最小的例子,因为我认为它与我的更多代码有关。但是,我相信我已经在下面提供了相关代码。我删除了我认为对问题不是很重要的类等部分。我有一个使用神经元的神经网络类:神经元templateclassNeuron{public:Neuron(){for(auto&i:m_inputValues)i=0;for(auto&e:m_eligibilityTraces)e=0;for(auto&w:m_weights)w=0;m_biasWeight=0;m_biasEligibilityTrace=0;m_outputValue=0;}voidSetInputValue(constst

如何开心的在iOS上玩NDS游戏

如何开心的在iOS上玩NDS游戏先说结论,有原生方案和web方案2种。Web方案其实现在的webassembly技术已经非常成熟了,我们可以通过编译C语言的模拟器代码,然后在浏览器上运行。这样就可以实现一个在线的模拟器了,而且不需要安装任何东西,只需要打开网页就可以玩游戏了。DS也有类似的解决方案,而且效果还不错,访问地址是https://ds.44670.org/怎么用iPhone访问的时候,它会提示你,需要把网站放到首屏。我看过它的源码,没有什么实际意义,提示说是优化存储缓存问题,其实就是让你把网站放到桌面上,可以全屏运行。添加完后,就可以在桌面上看到一个图标了,点击图标就可以进入模拟器了

c++ - 如何强制 MSVC 编译器省略大型临时对象的堆栈分配?

这个问题不是thisone的重复问题或其他类似问题。这个问题是关于在初始化和使用后清除一个结构。更新在阅读了您的前几条评论后,我想澄清一下我的问题:如何强制MSVC编译器省略大堆栈分配?我更新了标题、文本和下面的代码以阐明这一点。我最近开始使用/GS、/sdl和/analyze编译器选项编译我的项目。(MicrosoftVisualC++2015)使用这些选项,编译器可以正确警告有问题的代码结构。但是,我遇到了一些我一直认为是好的C++风格的警告。请看下面的示例代码:structmy_struct{charlarge_member[64000];};voiddo_something_e

c++ - 使用 GCC 4.6.2 C++ Qt、MinGW、Vista 设置堆栈大小

我想增加我的程序的堆栈大小,因为我有一个复杂的递归算法,迭代重写将是一个真正的痛苦。我正在使用GCCC++4.6.2。MinGw,在Vista上使用Qt.pro文件构建(我使用Qt作为GUI前端)。本网站的建议是使用:-gcc-Wl,--stack,4194304并将其发送到g++链接阶段:-LIB+=-Wl,--stack,4194304但是链接器错误:-g++:error:unrecognizedoption'--stack,4194304'我尝试使用QMAKE_CXXFLAGS+=将选项发送到编译阶段,但g++仍然barfs。唯一不会barf的选项是GCC文档(.pdf4.5.0

c++ - 使用 AudioFileServices 在 iOS 6 中进行颗粒合成

我有一个关于我正在开发的声音合成应用程序的问题。我正在尝试读取一个音频文件,使用granularsynthesistechniques创建随机的“grains”,将它们放入输出缓冲区,然后能够使用OpenAL将其回放给用户。出于测试目的,我只是将输出缓冲区写入一个文件,然后我可以回听。从我的结果来看,我在正确的轨道上,但我遇到了一些混叠问题和播放声音,这些问题似乎不太正确。输出文件中间通常会发出相当响亮的爆破声,而且音量有时非常大。以下是我为获得所需结果而采取的步骤,但我对一些事情有点困惑,即我为AudioStreamBasicDescription指定的格式。从我的mainBundl

c++ - 如何防止 MSVC++ 为 switch 语句过度分配堆栈空间?

作为遗留代码库更新工具链的一部分,我们希望从BorlandC++5.02编译器转移到Microsoft编译器(VS2008或更高版本)。这是一个嵌入式环境,其中堆栈地址空间是预定义的并且相当有限。事实证明,我们有一个带有大量switch语句的函数,这会导致在MS编译器下比在Borland下分配更大的堆栈分配,实际上会导致堆栈溢出。代码的形式是这样的:#ifdefPKTS#defineRETURN_TYPESPackettypedefstruct{inta;intb;intc;intd;inte;intf;}SPacket;SPacketerror={0,0,0,0,0,0};#else