C 非法访问
C++ Illegal Access
我正在面临非法访问错误,但我不确定我的代码中发生了什么...
我有这样的课程:
class MyClass
{
cHapticDeviceHandler* handler;
public:
MyClass(void){handler = new cHapticDeviceHandler();}
~MyClass(void){delete handler;}
cHapticDeviceHandler* getHandler() {return handler;}
};
如果我创建这样的函数,我的代码就可以正常工作。我可以创建一个新对象,并使用Gethandler()方法使用ChapticDeviceHandler*而没有问题。
function A(){
MyClass* obj1 = new MyClass();
...
}
但是,如果我尝试做这样的事情...
function B(){
MyClass* obj1 = new MyClass();
MyClass* obj2 = new MyClass();
}
第一个OBJ1是没有问题的,但是第二个obj1在执行构造函数时只是崩溃了。
如果我没有错,则当您从类创建新对象时,它们的属性不同,因此每个对象都有自己的属性。考虑到这一点,我将这些chapticdevicehandler指针在两个对象中有所不同,所以我不明白为什么首先要做新的事情,而再次这样做只是行不通的。
我很确定我在做一些真正的错误并尴尬的buuuut ...我找不到问题:$
有人可以给我提示吗?我被迫使用Visual Studio 2008,并且正在使用Chai3D,以防万一很重要。
我的猜测是您不能创建一个以上的chapticdevicehandler实例。因此,当您创建第一个MyClass对象时,您就可以了,但是当您创建第二个myClass对象时,它将尝试实例化另一个Chapticdevicehandler,而这将不允许。可能是您只有一个设备,因此不能有两个处理程序?
没有更多信息,我只能猜测。问题似乎是您尝试创建多个cHapticDeviceHandler
实例。也许它不支持创建超过一个实例,例如因为它使用一些static
数据或使用独家资源(请参阅设备驱动程序)?
请咨询cHapticDeviceHandler
类的文档或代码以验证这一点。
如果您确实只能创建一个这样的对象,则可以通过为对象提供单身工厂来解决问题。
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 用于访问容器<T>数据成员的正确 API
- 访问者访问变体并返回不同类型时出错
- 在Visual Studio中查找非法内存访问
- CUDA非法访问内核内存
- 为什么代码会抛出非法内存访问错误
- CUDA 中的递归返回非法内存访问
- 错误:遇到非法内存访问
- 咖啡错误 == cuda成功(77 与 0)遇到非法内存访问
- 如何避免 CUDA 中的非法内存访问
- C 非法访问
- CUDA非法访问内存
- 调试对释放内存的非法访问
- CUDA 直方图遇到非法内存访问 (77)
- 非法内存访问错误
- cuda + opencv 非法内存访问
- 除非我增加稀疏矩阵的稀疏性,否则禁止非法内存访问
- 任何导致非法访问的类型更改