Unhandled exception at 0x00291422 in x.exe: 0xC0000005: Access violation writing location 0x37ACCE08

2023-11-07

在这里插入图片描述
源码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>   //malloc所在库

#define MAXSIZE 100  //宏定义不能加“;”,初始化栈的大小
//const int MAXSIZE = 100;

typedef int SElemType;
typedef bool Status; //状态参数

typedef struct{                    //栈结构体
	SElemType data[MAXSIZE];
	int top;                       //栈指针
}SqStack;


Status Push(SqStack *S, SElemType e){   //压栈函数
	if(S->top == MAXSIZE - 1)			//如果已经是满栈,状态返回false
		return false;
	S->top++;                           //栈指针+1
	S->data[S->top] = e;				//压栈
	return true;						//返回创建成功
}

int main(){
	
	SqStack *S = (SqStack *)malloc(sizeof(SqStack));	//申请内存空间
	//S -> top = -1;					//应该对top进行初始化,否则报错
	SElemType e = 5;					//创建待压栈元素e
	Push(S, e);							//调用压栈函数

	free(S);							//释放内存
	return 0;
}

引起的原因是S->top未初始化,添加初始化赋值:S -> top = -1;

#include<stdio.h>
#include<string.h>
#include<stdlib.h>   //malloc所在库

#define MAXSIZE 100  //宏定义不能加“;”,初始化栈的大小
//const int MAXSIZE = 100;

typedef int SElemType;
typedef bool Status; //状态参数

typedef struct{                    //栈结构体
	SElemType data[MAXSIZE];
	int top;                       //栈指针
}SqStack;


Status Push(SqStack *S, SElemType e){   //压栈函数
	if(S->top == MAXSIZE - 1)			//如果已经是满栈,状态返回false
		return false;
	S->top++;                           //栈指针+1
	S->data[S->top] = e;				//压栈
	return true;						//返回创建成功
}

int main(){
	
	SqStack *S = (SqStack *)malloc(sizeof(SqStack));	//申请内存空间
	S -> top = -1;					//应该对top进行初始化,否则报错
	SElemType e = 5;					//创建待压栈元素e
	Push(S, e);							//调用压栈函数

	free(S);							//释放内存
	return 0;
}

出现错误的原因:读取了本该没有的值或者地址。

解决方法主要从以下三个方面出发:

1、检查下传入的参数是否合法;
2、若malloc了一块内存,必须记得free;
3、是否赋值了已经溢出的值或地址。

参考文献:Unhandled exception at 0x… in XXXX.exe: 0xC0000005:Access violation reading location 0x…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unhandled exception at 0x00291422 in x.exe: 0xC0000005: Access violation writing location 0x37ACCE08 的相关文章

  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • Unity InputField 拉起手机系统键盘

    inputField ActivateInputField ActivateInputField将自动拉起键盘 隐藏移动设备上屏幕键盘附带的文本输入显示区 白色区域 仅适用于iOS设备生效 inputField shouldHideMobi
  • 多线程总结

    一 多线程 1 什么是进程 什么是线程 进程是一个应用程序 1个进程是一个软件 线程是一个进程中的执行场景 执行单元 一个进程可以启动多个线程 对于java程序来说 当在DOS命令窗口中输入 java HelloWorld 回车之后 会先启
  • GBDT算法详解

    GBDT基本思想 GBDT的基本结构是决策树组成的森林 学习方式是梯度提升 具体的讲 GBDT作为集成模型 预测的方式是把所有子树的结果加起来 GBDT通过逐一生成决策子树的方式生成整个森林 生成新子树的过程是利用样本标签值与当前树林预测值
  • dp(动态规划)思考

    dp的核心思想是分治策略和表存储 分治策略并非dp所独有 很多算法都运用了把问题拆解为子问题的做法 比如递归 表存储应该是dp比较独有的一种方式 通过存储一些中间结果 可以避免重复计算 从而提升程序运行的速度 def max length
  • 简述3032路pcm帧的结构_基于5G NSA组网结构下用户体验提升研究

    摘要 针对现阶段5G NSA组网结构模式下 开展5G特性研究 以研究5G新一代通信技术与5G相关技术特点为前提 结合实际测试与分析结果 通过对DC双连接 时隙配比以及MASSIVE MIMO差异性3个方面进行分析测试对比 大幅度提升NSA组
  • UnityWebRequest向后端Get数据,后端显示 code 400, message Bad request version 和 HTTPStatus.BAD_REQUEST

    结论 我遇到这个问题是因为UnityWebRequest Get url 中的url是 https localhost port 但是用python flask写的后端服务器url却是 http localhost port 当我把Unit
  • JDBC(二)

    DatabaseMetaData 接口 通过这个接口中的方法可以查看数据库的整体综合信息 DatabaseMetaData 给出的信息描述 DBMS 所提供的事务支持水平 比如 查看驱动程序 数据库 的版本号等 boolean suppor
  • Node.js后端开发 - 进阶篇 #8 express框架之路由模块的封装1

    目录 一 前言 二 路由模块的封装 1 初始化项目 安装express框架 1 npm init y 初始化项目 生成package json文件 2 npm init y 和 npm init 区别 3 安装 express 框架 生成
  • 卸载 SQL Server Management Studio 的操作工具

    我们今天是要和大家一起讨论的是卸载 SQL Server Management Studio 时所要用到的实际操作工具 以及对实现卸载 SQL Server Management Studio 的实际操作步骤的具体描述 以下就是文章的主要内
  • Windows下 Cmake 没有生成makefile文件

    Windows下 Cmake 没有生成makefile文件 不是为了生成解决方案的 针对指令操作 1 主要是因为编译器选择的问题 很有可能选择到了vs的编译器MSVC 了导致生成了解决方案 2 如下操作 使用cmake G Unix Mak
  • 2023年最好用的办公AI工具,让你工作效率提升10倍!

    2023年是AI工具大爆发的一年 在效率办公领域 同样涌现出了很多优秀的AI办公工具 小编亲测了几款 都是宝藏好用的App 以下排名不分先后 一起来看看吧 AI办公工具哪个好 GitMind Notion AI 酷表ChatExcel 通义
  • 计算机老师副业能做什么,教师除了本职工作,还能做哪些副业?

    原标题 教师除了本职工作 还能做哪些副业 本文来源于微信公众号 教师帮 作者 小磊哥 图 互联网 如有转载 请联系并注明原出处 不知老师在学校有没有发现这么一种情况 当你正在为这个月的工资怎么分配而发愁的时候 坐在你身边的同事却春风得意 好
  • 模糊控制器 Matlab 源码程序设计

    模糊控制器 Matlab 源码程序设计 模糊控制是指在不确定 复杂的环境中 通过将自然语言转为数学形式 使用一定的逻辑运算来处理模糊信息 从而实现对系统的控制 在实际应用中 模糊系统已被广泛应用于各种领域 如自动控制 图像处理 数据挖掘等方
  • 软件测试用例编写方法

    边界值分析方法 概念 边界值其实就是一种黑盒测试方法 边界值本质上就是有效等价类和无效等价类的边界 1 边界范围节点 边界值的三个概念 上点 边界值上面的这个点 就是上点 正好等于 内点 有效等价类中的任意一个点 区间范围内的数据 离点 边
  • 改变数据类型

    int 是32 long 是64 numpy改变 pytorch改变 np th list 互换
  • CCF-CSP真题《202305-1 重复局面》思路+python,c++满分题解

    想查看其他题的真题及题解的同学可以前往查看 CCF CSP真题附题解大全 试题编号 202305 1 试题名称 重复局面 时间限制 1 0s 内存限制 512 0MB 问题描述 题目背景 国际象棋在对局时 同一局面连续或间断出现3次或3次以
  • 如何实现概率性事件

    游戏中经常会遇到概率性的问题 比如装备升级的成功率 合成宝石的成功率 洗装备时出现随机属性条数的概率等 这些概率性事件具体是怎么实现的呢 在网上看了一些相关的文章 总结一下 首先需要了解两个函数rand 和srand 下面是百科里面的解释
  • 如何存储Ajax请求的响应值

    如何存储Ajax请求的响应值 一 背景 二 代码部分 三 总结 一 背景 开发者使用Ajax请求网络 获取到了返回的结果 但开发者不想将回调函数写的过于冗长 因此希望将Ajax请求的返回值存储到一个变量中 方便后期取用 二 代码部分 代码部
  • Qt简介以及工程创建

    Qt是一种跨平台应用程序和UI开发框架 只需要一次性开发应用程序 可应用于不同的系统 Qt不是一个严格的前后端 而是一种框架 Qt Creator是一种全新跨平台 Qt IDE集成开发环境 可以单独使用 也可以与Qt库和开发工具组成一套完整
  • Unhandled exception at 0x00291422 in x.exe: 0xC0000005: Access violation writing location 0x37ACCE08

    源码如下 include