问题标签 [c++]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2050 浏览

c++ - Nintendo DS Homebrew 中的 Alpha 混合精灵

我正在尝试将精灵和背景与devkitPro(包括 libnds、libarm 等)进行 alpha 混合。

有谁知道如何做到这一点?

0 投票
5 回答
2307 浏览

c++ - 如何制作图形用户界面?

我已经为 Nintendo DS 制作了 GUI 系统的许多不同的单独部分,例如按钮、文本框和选择框,但我需要一种将这些类包含在一个 Gui 类中的方法,以便我可以将所有内容都绘制到屏幕上一次,并一次检查所有按钮以检查是否有任何按钮被按下。我的问题是将所有类(例如按钮和文本框)组织到一个 GUI 类中的最佳方法是什么?

这是我想到的一种方法,但似乎不对:

编辑:我正在使用 C++。

这段代码有一些问题,但我只是想让你知道我想要什么。

0 投票
12 回答
15459 浏览

c++ - 内存管理、堆损坏和 C++

所以,我需要一些帮助。我正在使用 C++ 开发一个项目。但是,我想我已经设法破坏了我的堆。这是基于我将 an 添加std::string到一个类并为它分配另一个值的事实std::string

我的系统因堆栈转储而崩溃。所以基本上我需要停下来检查我所有的代码和内存管理的东西,找出我搞砸的地方。代码库仍然很小(大约 1000 行),所以这很容易做到。

尽管如此,我还是对这种东西感到头疼,所以我想我会把它扔在那里。我在 Linux 系统上使用valgrind,虽然不完全知道我在做什么,但它确实报告了std::string' 的析构函数是无效的。我不得不承认从谷歌搜索中得到了“堆损坏”这个词;任何关于这类东西的通用文章也将不胜感激。

(在之前rm -rf ProjectDir,在 C# 中再次执行:D)

编辑:我还没有说清楚,但我要的是诊断这类内存问题的建议。我知道 std::string 的东西是正确的,所以这是我做过的事情(或者是一个错误,但 Select 没有问题)。我确信我可以检查我编写的代码,你们非常聪明的人很快就会发现问题,但我想将这种代码分析添加到我的“工具箱”中,就像它一样。

0 投票
4 回答
873 浏览

c++ - Testing a function that throws on failure

What is the best way of testing a function that throws on failure? Or testing a function that is fairly immune to failure?

For instance; I have a I/O Completion Port class that throws in the constructor if it can't initialise the port correctly. This uses the Win32 function of CreateIoCompletionPort in the initialiser list. If the handle isn't set correctly - a non-null value - then the constructor will throw an exception. I have never seen this function fail.

I am pretty certain that this (and other functions like it in my code) if they fail will behave correctly, the code is 50 lines long including white-space, so my questions are

a) is it worth testing that it will throw
b) and if it is worth testing, how to?
c) should simple wrapper classes as these be unit-tested?

For b) I thought about overriding CreateIoCompletionPort and passing the values through. In the unit test override it and cause it to return 0 when a certain value is passed in. However since this is used in the constructor then this needs to be static. Does this seem valid or not?

0 投票
3 回答
11398 浏览

c++ - Windows C++:如何重定向 stderr 以调用 fprintf?

我正在将BSD项目中现有的 C++ 代码包装在我们自己的自定义包装器中,并且我希望通过尽可能少的更改将其集成到我们的代码中。此代码用于fprintf打印到stderr以记录/报告错误。

我想将其重定向到同一进程中的另一个位置。在Unix上,我使用 asocketpair和 a完成了此操作thread:套接字的一端是我发送stderr的地方(通过对 的调用dup2),另一端在线程中进行监视,然后我可以在其中处理输出。

这在Windows上不起作用,因为套接字与文件句柄不同。

我在网上找到的所有文档都显示了如何重定向子进程的输出,这不是我想要的。如何在写入输出时在同一进程中重定向stderr以获取某种回调?(在你这么说之前,我已经尝试过SetStdHandle但找不到任何方法来完成这项工作)......

0 投票
9 回答
154996 浏览

c++ - 如何在 C++ 中打开文件?

我想以 C++ 方式打开一个文件进行阅读。我需要能够做到:

  • 文本文件,这将涉及某种读取行功能。

  • 二进制文件,这将提供一种将原始数据读入char*缓冲区的方法。

0 投票
3 回答
2740 浏览

c++ - 我无法让我的调试器停止对第一次机会异常的破坏

我正在使用 Visual C++ 2003 通过 TCP/IP 远程调试程序。

我设置了 Win32 异常 c00000005,“访问冲突”,以便在抛出时闯入调试器。然后,我将其设置回“使用父设置”。父项 Win32 Exceptions 的设置是在引发异常时继续。

现在,当我调试程序时,每次抛出异常时它都会中断,迫使我单击继续让它继续调试。我怎样才能让它停止像这样打破?

0 投票
6 回答
1365 浏览

c++ - MSVC6:断点停止程序

使用 Microsoft Visual Studio 98、Microsoft Visual C++ 6.0 SP6

在调试器下运行时,只有一个问题。如果我暂停程序并继续,一切都很好。

问题?当我遇到断点时,我的程序会停止。但不是很好;执行停止,我被抛出调试模式进入编辑模式。一切都很好,直到断点被击中。而且我知道它正在到达断点 - 我看到指向右侧代码行的黄色小箭头闪烁,检查窗口中的局部变量和该窗口中的调用堆栈。然后我盯着编辑器。

这发生在所有项目中。

我已经卸载并重新安装了 MSVC6。它没有帮助。

我即将在一台新电脑上重新开始;在我走那么远之前,有人知道我对这个做了什么吗?


注意:MSVC6 不是我的选择,但有原因。这是我使用的工具。而且,我们要针对 NT4,所以鉴于 2008 不能针对 NT4,而 2005 与 MFC 和 NT4 有问题,MSVC6 就是这样。

0 投票
13 回答
8511 浏览

c++ - C++ 中的安全内存分配器

我想创建一个分配器,它提供具有以下属性的内存:

  • 无法分页到磁盘。
  • 很难通过附加的调试器访问

这个想法是这将包含用户应该无法访问的敏感信息(如许可证信息)。我已经在网上进行了通常的研究,并就此询问了其他一些人,但我找不到一个很好的起点来解决这个问题。

更新

Josh提到了使用VirtualAlloc来设置内存空间的保护。我创建了一个自定义分配器(如下所示)我发现使用VirtualLock它限制了我可以分配的内存量。这似乎是设计使然。因为我将它用于小物体,所以这不是问题。

并且被使用

Ted Percival提到了 mlock,但我还没有实现。

我发现Neil Furguson 和 Bruce Schneier 的 Practical Cryptography 也很有帮助。

0 投票
13 回答
59039 浏览

c# - 我可以让 Memcached 在 Windows (x64) 64 位环境中运行吗?

有谁知道如果何时如何Memcached在 Windows 64 位环境中运行?

我正在设置一个新的托管解决方案,并且更喜欢运行 64 位操作系统,因为它是一个带有 SQL Server DB 的 ASP.Net MVC 解决方案,所以操作系统要么是 Windows Server 2003,要么是(希望!)2008。

我知道这可能会引发关于服务器上 32 位与 64 位的争论,但我只想说我的偏好是 64 位,而且我有一些很好 理由。

到目前为止,我已经尝试了许多选项,并找到了一些与在 32机器上安装它相关的帮助(我可能会添加成功),但由于原始Windows 端口是 Win32 特定的,这几乎没有帮助在 x64 上作为服务安装时。它还依赖于我只能获得 Win32 编译版本的libevent 。

我怀疑简单地在 C++ 中加载所有这些并点击“编译”(对于 64 位)是行不通的,尤其是因为 32 位和 64 位架构的复杂差异,但我想知道是否有人正在努力解决这个问题地面?不幸的是,我的专长仅在于托管代码 (C#),否则我会尝试自己承担这一点,但我不敢相信我是唯一一个试图让memcached在 64 位 Windows 服务器上运行的人。 ..我吗?


更新

是的,恐怕我仍在寻找这个问题的答案——我所有的努力(用我可怜的 C++ 技能)来建立一个稳定的构建都失败了——我已经破坏了一台服务器和 3 个虚拟机只是在尝试,所以现在我求助于真正的专家。有人打算将其移植到64位吗?还是您真的建议我改用 MS Velocity?一想到我就不寒而栗。


更新:@Lars - 我确实使用 Enyim - 它非常好,但你指的是客户端,而不是服务器部分。

@DannySmurf - 我只能将它作为服务安装在 32 位操作系统上。64 位操作系统拒绝安装此 Win32 服务。当然是的,许多 Win32 代码在 x64 架构上无缝运行,因此您可以在 Vista/XP 64 等上运行 32 位应用程序(例如 Office)或游戏,但这并不能直接转化为服务。我不是专家,我怀疑这与服务需要订阅的同步或事件有关,而且我怀疑 64 和 32 不能很好地发挥作用。我很高兴得到纠正,但要回答你的问题 - 是的,我已经尝试过了。

@OJ - 非常感谢您的直截了当的回应。我想了很多,但不确定其他人是否有建议或已经走这条路。也许当 StackOverflow 上线时,会有更多人回复并让我知道这是否正在研究,尽管我可以尝试自己编译它 - 我根本无法“相信”(以我的 C++ 经验水平)它将在大型可扩展解决方案的关键组件中提供“企业级”可靠性。我认为这需要有教养的干预,而不是我未经消毒的实验方法,然后我才能有信心。我的一个小小的疏忽可能会导致网站瘫痪。哦,好吧……直到下一次。