草庐IT

c++ - 我可以将 Visual C++ 运行时切换到另一个堆吗?

我的程序使用了第三方动态链接库,里面有大量内存泄漏。我的程序和库都是VisualC++native代码。两者都动态链接到VisualC++运行时。我想强制库进入另一个堆,以便在库代码运行时通过VisualC++运行时完成的所有分配都在该堆上完成。我可以调用HeapCreate(),然后调用HeapDestroy()。如果我以某种方式确保所有分配都在新堆中完成,我就不再关心泄漏-当我销毁第二个堆时它们都会消失。是否可以强制VisualC++运行时在指定的堆上进行所有分配? 最佳答案 抱歉,我的最后一个回答半生不熟,我按了Tab键并输入

c++ - 调试时如何在 Visual C++ 2010 中跟踪/输出时间戳

伙计们,VC2010提供了调试工具“trace”,它不仅可以将变量值输出到输出窗口,还可以输出一些内置参数,如TIDTNAME、PID等。我也想跟踪输出时间戳,这可能是intVS2010吗?谢谢! 最佳答案 您可以使用预定义变量$TICK,info@MSDN 关于c++-调试时如何在VisualC++2010中跟踪/输出时间戳,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/571

c++ - 如何在 Visual Studio 的匿名命名空间内通过函数名设置断点?

我有以下代码:namespace{voidFoo(){}}namespaceBar{voidFoo(){}}intmain(){Foo();Bar::Foo();return0;}我想按名称(Ctrl+B键绑定(bind))在匿名命名空间内的Foo()上放置断点。我可以在命名空间Bar中为函数执行此操作,按名称Bar::Foo没有问题。我为匿名命名空间尝试了anonymousnamespace::Foo但VS无法解析此名称,我猜是因为名称中的空白字符。我也试着加上不同的引号,但没有成功。是否可以放置此断点? 最佳答案 我很久以前遇到

如何用Visual Studio自带工具分析内存泄漏?

首先用vsattach到进程,再点调试--窗口--显示诊断工具。注意:高能来了!!如果用调试--性能探测器去附加进程,则内存使用率这一项是灰的,无法勾选,但是用先attach,再显示诊断工具就可以分析内存,所以无论何时,都只用先附加进程,再显示诊断工具这一种方法!切到内存使用率选项卡,启用堆分析,然后截取两个时间点的快照,快照1和快照2,点击快照2,点查看堆:然后在与基线进行比较中,选择快照1:可以看到有两个选项卡,类型和堆栈,首先看类型,主要关注计数差异,和大小差异,计数差异为2,是指有两次分配没有释放,大小差异为15字节,是指这两次分配一共15字节,然后可以双击第一行,点进去:可以看到两次

c++ - 为什么 Visual C++ 无法编译继承自私有(private)嵌套类的友元模板?

考虑以下代码:classA{classB{};templatefriendclassC;};templateclassC:A::B{};intmain(){Cc;}它可以用GCC和Clang编译,但是VisualC++2010会报错:test.cc(11):errorC2248:'A::B':cannotaccessprivateclassdeclaredinclass'A'这是VisualC++中的错误还是我遗漏了什么? 最佳答案 1998年标准和2011年标准都包含基本相同的代码作为示例,分别在14.5.3#4和14.5.4#3

c++ - Visual Studio 远程编译运行

我正在尝试弄清楚是否可以将VisualStudio2012用作完整的Linux开发套件。我知道这不是这里的常规问题,但请与我合作。到目前为止,我所拥有的是使用VisualStudio作为文本编辑器在我的计算机上运行的Linux虚拟机中进行编辑的能力。我这样做的方法是设置一个永久的ssh门户,充当我的Windows中的硬盘驱动器。我使用名为WebDrive的程序完成了此操作:太棒了,这意味着我可以从VisualStudio中完整查看我的Linuxc++项目。这提供了我喜欢VisualStudio的所有很酷的C++编辑功能。那么从这里到哪里呢?基本上我现在拥有的是一个重量级美化的文本编辑器

c++ - 在没有 Microsoft 扩展的情况下在 Visual C++ 中构建

这个问题在这里已经有了答案:/ZacompilerdirectivedoesnotcompilesystemheadersinVS2010(2个答案)关闭8年前。我正在尝试在禁用所有非标准扩展的MicrosoftVisualC++2013中构建项目。#ifdef_MSC_VER#include#endif在配置属性-->C/C++-->语言中,我将“禁用语言扩展”设置为是(/Za)。但是,构建以前的代码时出现如下错误:C:\ProgramFiles(x86)\WindowsKits\8.1\Include\um\winnt.h(11527):errorC2467:illegaldecl

c++ - 使用带有动态库的 Eigen 和 Visual Studio 2013 的内存对齐错误

我一直在我的软件中使用Eigen,今天我遇到了一个问题,这是由于我使用VisualStudio2013将我的代码从在Windows中构建静态库更改为动态库引起的。此切换的原因是与Eigen无关。我将Eigen嵌入到我自己的库文件中,然后将其本身链接到我的应用程序中。如前所述,这个库直到今天都是一个静态库;我刚刚更新了我的代码库以生成一个DLL文件。进行此更改后,我现在从VisualStudio收到以下错误消息:位于------------------的block由对齐例程分配,使用_aligned_free()(此消息多次弹出,每次都使用不同的地址;我在上面使用了破折号,因为我认为具体

c++ - Visual Studio 2017 找不到 cl.exe

我最近安装了VisualStudio2017,需要更改C++项目中的某些内容。但是当我尝试构建时,它说缺少cl.exe。在线提供的解决方案似乎都不起作用。我有一个cl.exe,但它位于此路径下:C:\ProgramFiles(x86)\MicrosoftVisualStudio\2017\Enterprise\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64我也试过运行vcvars32.bat,但似乎没有任何改变。而且我已经安装了“使用C++进行桌面开发”。 最佳答案 我通过运行vcvars.bat

c++ - Visual Studio 是否支持数据缓存操作?

通读一些关于低延迟计算的精彩演讲。他们引用了IBM的XLC/C++编译器数据缓存操作__dcbt(数据缓存block触摸)为他们cell编译器。该操作将一block内存加载到L1缓存中。VisualStudio(或G++或Intel)是否具有适用于Intel处理器的类似功能?如果是这样并且解决方案是特定于平台的(即仅限Windows或*nix),请说明。 最佳答案 是的,VisualStudio支持所有SSE和MMX内部操作。此处简要描述缓存控制操作:http://www.tommesani.com/SSECacheabilityC