- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我在 VS 2008 中使用 C++ 开发嵌入式环境(ARM 处理器)。我为我的公司建立了一个中型项目。到目前为止,它是一个 Windows 应用程序。我被要求将其更改为控制台应用程序,因为这对这个应用程序更有意义。我没有真正的理由让它成为一个 Windows 应用程序......起初,我只是在 VS 中更改了适当的设置(我认为)然后重建。它构建得很好,但是每次我尝试运行该程序时,我都会在标题中引用异常。我想强调的是,在我将它切换到控制台应用程序之前,该程序运行良好。我也确实对整个解决方案进行了全面清理和重建。
我认为这可能只是我手动更改设置的问题,所以我创建了一个新项目,将其设置为控制台应用程序并将所有源/其他相关项目插入其中。一旦我将解决方案中的所有不同项目正确链接在一起,这个构建也很好,但出现了同样的错误。
当程序崩溃时,它停止在下面方法中的插入命令处:
template<class Elem>
Node<Elem>* Node<Elem>::addChild(const Elem& value)
{
Node<Elem>* newNode = new Node(value);
newNode->m_pParentNode = this;
m_childList.push_back(newNode);
m_sNodeSet.insert(newNode);
return newNode;
}
m_sNodeSet 用于执行树中每个节点必须唯一的规则。第一次调用此 addChild 方法时会发生错误。此时,m_sNodeSet 的大小为零,需要分配一些内存。但是抛出的异常是 Access Violation,而不是预期的 Bad Alloc。我确实尝试在插入语句之前添加一个 m_sNodeSet.get_allocator().allocate(5) 以查看是否可以执行任何操作,但抛出了相同的异常。如果有区别的话,m_sNodeSet 是一个静态成员变量。
这个 Node 类是我创建的自定义树对象。几个星期以来,我没有对这个树项目进行任何更改,而且它一直运行良好。我不认为我在这个树项目中投入了任何它以前从未见过并且表现完美的东西,所以我认为问题不在于树项目本身。
我确信这也不是跨库边界访问 STL 容器的问题。此错误发生在单个静态库的操作中。
我觉得在我的解决方案中必须有一些设置仍然需要更改才能使其正常工作。解决方案中有几个项目,一个DLL,一个LIB,一个EXE。这棵树是第四个项目,但它只是简单地放入了相应项目的“附加包含”中。我只更改了 EXE,以便它可以作为控制台应用程序执行。
如果你们对这里可能出现的问题有任何想法,我们将不胜感激。
最佳答案
如果您已声明:
// Global scope
// > (quote)The m_sNodeSet is a static member variable,
std::set<Node<Elem>*> Node<Elem>::m_sNodeSet;
个人注意:前缀m_
通常是成员变量(不是静态成员)的捐赠者。因此,您会使很多使用此前缀的人感到困惑。
如果 m_sNodeSet
是一个静态成员并且上面的代码在 main 之前 运行,那么您可能会遇到初始化顺序问题。这很容易解决(见下文)。否则你会有一些内存损坏。
class Node
{
// Remove this line
// static std::set<Node*> m_sNodeSet;
// Replace with this code
static std::set<Node*>& getNodeSet()
{
static std::set<Node*> sNodeSet;
return sNodeSet;
}
// Replace all references to m_sNodeSet with getNodeSet()
}
这是有效的,因为在方法 getNodeSet()
中,变量 sNodeSet
是静态的,因此在第一次使用时创建,并在程序长度内保持事件状态。每次调用都将返回对同一对象的引用。因为它是在第一次调用时创建的,所以当返回到使用点时它保证是事件的(并且完全构建)。
关于c++ - 首次插入静态 STL 集会导致未处理的异常 0xC0000005 : Access violation to be thrown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10213472/
我正在尝试编写 Access Access 数据库的脚本,以便在命令行上使用。 Access 数据库使用工作组文件进行保护。 Dim oApp, sWGF,myWS Set sApp = Create
我有一个包含数据表的表格。我希望用户能够选择多行,单击按钮并运行一些 sql 查询并对这些行执行一些工作。 查看我的 VBA 代码,我发现如何使用 CurrentRecord 属性 Access 最后
如果我在某个网络位置有 Microsoft Access 2007 数据库,那么可以使用该数据库的客户端计算机的数量是否有限制?客户端不会安装 Access,而是使用 Access Runtime 2
我正在开发一个注册系统。但我收到此错误:You tried to execute a query that does not include the specified expression.. 我正
我有一个产品设计为使用 MS Access 文件作为数据库的桌面产品。 现在,一些用户需要将它安装在几台 PC(比如说 2 或 3 台)上并共享数据库。 我想将 MS Access 文件放在共享文件夹
我接手了一个旧的软件项目,该项目使用 MS Access 数据库来存储数据。但是数据库不会在 Access 中打开,如下所示: "You do not have the necessary permi
我有一个文件夹,里面装满了 100 多个 Access97 文件。我需要将它们全部更新到 Access2003。 我可以手动完成,但使用 VBA 可能会快很多。 有没有人会有一个片段可以做到这一点?或
我正在通过 SQL Server 迁移助手 (SSMA) 将数据从 Access 数据库迁移到 SQL Server。 Access 应用程序将继续与转换为链接表的本地表一起使用。 一个连续的表单在加
我正在通过 SQL Server 迁移助手 (SSMA) 将数据从 Access 数据库迁移到 SQL Server。 Access 应用程序将继续与转换为链接表的本地表一起使用。 一个连续的表单在加
我的公司用 Visual Basic 6 开发了一个应用程序。 该应用程序通过 ODBC 数据源使用 Access 数据库。 Access 数据库是一个扩展名为“.mdb”的文件。 在以下环境中运行应
我一直在尝试让 Microsoft Access 从主 Access 窗口中“退出”,以便我可以隐藏 Access 窗口并仅在桌面上显示表单,以便可以轻松地将其放置在其他应用程序旁边。 起初我发现了一
我想在 access 2010 中使用 access 2000 和 2003 数据库。由于我不想检查一切是否手动工作,我正在寻找一种工具来分析 VBA 代码以查找使用 access 2010 发生的错
所以我有一个 Excel 工作簿,其中有一个很好的 shaperange 对象的全局 map 。通过一些非常简单的代码,我可以更改颜色、将国家/地区集合分组和取消分组为数组等......并且效果非常好
我们希望有大约 35-40 人通过共享驱动器上的脚本写入 Access 数据库。这些指标分解为他们需要每小时写大约 3-7 次。 Access 会支持这一点而不会对我产生影响吗? 是的,我很乐意将其用
我正在寻找一种使用 VBA 代码从外部数据库文件中删除 VBA 模块的方法。名为“myfile.accdb”的外部文件有一个名为“mod1”的模块,我希望能够在单独的项目中使用 VBA 代码删除该模块
我在 Access 2003 数据库(在 Access 2007 中开发)中有三个表单,它们处于父级 -> 子级 -> 孙子级关系中。在子窗体的 'Form_Load' 子窗体中,我设置了孙子窗体的一
MS Access 2007 存在拒绝在设计模式下显示表单的问题。我可以看到表单的代码(如果我查看显示表单的按钮的事件属性),但我看不到作为 GUI 布局的表单。而且,当我尝试从应用程序的主窗口调用此
我编写了代码,使用 Excel 中的下拉列表提供的标准将两个表连接起来,然后将数据返回到电子表格上的特定位置(工作表上已经有标题)。 这在我的机器上和其他机器上使用 MS Access 的机器上都可以
我正在开始构建一个应用程序,该应用程序从给定的根路径开始遍历文件夹结构,并将所有找到的 Access 1997 .mdb 文件转换为较新的 Access 2007/2010 .accdb 格式。但是,
我有一个表单和一个按钮。我想通过单击按钮打开另一个表单,并将参数从父表单传递到子表单(子表单的 RecordSource 有参数)。我该怎么做? 最佳答案 您可以通过引用表单的对象来引用调用表单的任何
我是一名优秀的程序员,十分优秀!