我想知道异常0xc0000005以及它实际包含的内容.
即如果应用程序试图访问属于另一个进程的释放内存/内存,则会发生这种情况.
但是,例如,为硬件映射的地址呢?或者有效范围之外的地址?是否尝试使用相同的代码访问这些错误,或者他们是否拥有自己的错误?这是否包括对进程拥有的有效地址的读取失败?
基本上我想知道什么时候应用程序失败了这个例外,可能出了什么问题; 这是一个狭隘的错误,只能来自应用程序.代码还是我在看任何东西,包括硬件问题?
(我知道必须有一个MSDN页面,但搜索谷歌或MSDN会带来预期的100页故障排除随机应用程序;))
谢谢!
我不小心将Visual Studio 2010中的文本光标/插入符号从行更改为带有突出显示整个字符的框的文本光标/插入符号,但无法找到如何将其更改回来.谁能告诉我怎么样?谢谢!
在我的serialiser/deserialiser中,我有以下代码段:
if (element_type.IsValueType && collection_type.IsArray)
{
try
{
GCHandle h = GCHandle.Alloc(array_object, GCHandleType.Pinned);
int arrayDataSize = Marshal.SizeOf(element_type) * c.Count;
var array_data = new byte[arrayDataSize];
Marshal.Copy(h.AddrOfPinnedObject(), array_data, 0, arrayDataSize);
h.Free();
WriteByteArray(array_data);
return;
}
catch (ArgumentException)
{
//if the value type is not blittable, then we need to serialise each array item one at a time
}
}
Run Code Online (Sandbox Code Playgroud)
其目的是尝试以尽可能最有效的方式(即,仅将内容作为一堆字节)写入流中的值类型数组.
当类型是值类型但不是blittable时,问题就出现了,Alloc()失败了.此时捕获异常并将控制权传递给处理数组的代码,就好像它由引用类型组成一样.
然而,由于我的应用程序中遇到的值类型的数量,此检查(由于抛出并捕获我理解的异常非常慢)被证明是严重的瓶颈.所以我想知道,检查类型是否是blittable的最快方法是什么?
我知道在C++/CLI中,在定义托管类时不能使用非托管类型:
public struct Unmanaged
{
int x;
int y;
};
public ref class Managed
{
int one;
Unmanaged two; //error C4368
};
Run Code Online (Sandbox Code Playgroud)
我不明白为什么.Unmanaged它只是一个本机类型的集合 - 它的大小是已知的,当然它(我的意思是定义它的内存块)将被Managed"托管堆"内部的" 内存块"移动,并且元数据中存储的任何偏移都将保持有效,不是吗?就像声明了整数或浮点数一样?
为什么我们不能混合类型?
在我的PC上,我创建了一个名为的系统环境变量 3DSMaxInstallDirectory
在命令行,如果我给
echo %3DSMaxInstallDirectory%Plugins\
Run Code Online (Sandbox Code Playgroud)
我明白了
D:\Program Files\Autodesk\3ds Max 2011\Plugins\
Run Code Online (Sandbox Code Playgroud)
在Visual Studio中,我进入Post-Build部分
copy "$(TargetDir)$(TargetName).*" "$(3DSMaxInstallDirectory)Plugins\"
Run Code Online (Sandbox Code Playgroud)
然而,在构建我得到
Error 4 The command "copy "C:\Users\Sebastian\Documents\Visual Studio 2010\Projects\MaxBridge\MaxBridgeImporterPlugin\bin\Debug\MaxBridgePlugin.*" "Plugins\"
" exited with code 1. MaxBridgeImporterPlugin
Run Code Online (Sandbox Code Playgroud)
谷歌的结果是令人困惑的混合建议,Visual Studio不支持EV,Visual Studio支持EV,Visual Studio需要%..%和Visual Studio需要$(..) - 而且似乎都没有我的电脑.
在Visual Studio中使用环境变量的正确方法是什么?
(是的,目录存在,我不想明确设置路径的原因是我准备分享这个项目,下载后和建立之前别人必须采取的每一步都是另一个障碍.)
通常在Matlab中,颜色由RGB强度值的三个元素向量表示,精度为uint8(范围0-255)或双精度(范围0-1).Matlabs的功能,例如imshow使用任何一种表示,使得它们都易于在程序中使用.
然而,在将颜色值从一种类型的矩阵分配给另一种类型的矩阵时,同样容易引入错误(因为该值是静默转换的,但不会重新缩放到新范围).刚刚花了几个小时发现这样的错误,我想确保它再也不会被引入.
在进行类型转换时,如何让Matlab显示警告?
理想情况下,只有当转换介于double和之间时才会出现uint8.它也应该很难停用(即加载工作区时,或者当matlab崩溃时,不重置选项).
像GuyFawkes一样,我想使用MemoryStream存储大量数据,但仍然遇到"内存不足"异常.
TomTom的答案是我想要做的 - 使用一个不需要连续块的实现 - 但我想知道是否已经有一个免费的实现可用,以免我自己写一个?
有没有人知道可以使用大流的MemoryStream的一个好的,免费的重新实现?
编辑:
MemoryMappedFile解决方案非常有趣,我会记住它用于其他项目,但正如Henk所说,它偏离了MemoryStream所针对的抽象.具体而言,要求已知容量.
替换者应处理的数据在某些情况下会非常大,但在其他情况下相对较小(并且我们不知道它将会是什么,直到为时已晚;)); 此外,该课程的许多实例将同时存在.最终,使用MemoryMappedFiles(确定每个文件的适当大小)所需的工作将等同于实现TomTom解决方案的工作.
我正在尝试编写一个将使用DirectShow的小型库.这个库将由.NET应用程序使用,所以我认为最好用C++/CLI编写它.
我遇到这条线有问题但是:
HRESULT hr = CoCreateInstance( CLSID_FilterGraph,
NULL,
CLSCTX_INPROC_SERVER,
IID_IGraphBuilder,
(void**)(&graphBuilder) ); //error C2440:
Run Code Online (Sandbox Code Playgroud)
在哪里graphBuilder声明:
public ref class VideoPlayer
{
public:
VideoPlayer();
void Load(String^ filename);
IGraphBuilder* graphBuilder;
};
Run Code Online (Sandbox Code Playgroud)
如果我正确理解了这个页面,我可以*/&像往常一样用C++/CLI库中的非托管内存表示"本机"指针; ^用于表示指向托管对象的指针.但是,此代码生成:
错误C2440:'type cast':无法从'cli :: interior_ptr'转换为'void**'
该错误表明该graphBuilder被认为是一个'cli::interior_ptr<Type>'.那是托管内存的指针/句柄,不是吗?但它是纯粹的原生指针.我不是试图将指针传递给期望句柄的方法,反之亦然 - 我只是想将它存储在我的托管类中)如果是这样,我怎么说graphBuilder是一个"传统"指针?
(这个问题类似,但答案是,使用pin_ptr,我看不到帮助我,因为它不能成为我班级的成员)
我正在使用的库(zmq)抛出异常。调试器中断并通知我。
如果可能的话,我怎样才能看到这个异常。具体来说是什么()消息?无需在其周围放置 try/catch 并打印到输出流。
我读过这可以在使用 CLR 时完成 - 我可以在常规 C++ 中完成吗?
我的代码抛出未处理的异常,但Visual Studio中的调试器只会破坏系统抛出的异常.
例如,下面的返回值getaddrinfo不为零,我的异常应该首先抛出 - 实际上,如果我在第171行放置一个断点,它就会被命中 - 但是调试器只会在调用时中断socket.
我知道我必须明确地添加自己的类型,否则检查All C++ Exceptions not in this list,在Exception Settings,但是这是一个std::exception我抛出,并且std::exception 被选中.
如何在我的例外情况下自动使Visual Studio调试器中断?
c++ exception-handling visual-studio-debugging visual-studio-2017