引发了异常: 读取访问权限冲突。 s 是 0xD94000。

黄小猛 2018-10-25 10:15:07
好长时间没写过C了,当年也没好好学,水平实在太差,让各位见笑。
程序运行时报错
引发了异常: 读取访问权限冲突。 s 是 0xD94000。
int lengthOfLongestSubstring(char* s) {
int a[26] = { 0 }, n = 0, max = 0;
while (s != 0)
{
a[*s - 'a']++;
if (a[*s - 'a'] == 2);
{
for (int i = 0; i < 26; i++)
a[i] = 0;
if (max < n)
max = n;
n = 0;
}
n++;
s++;
}
return max;
}
int main()
{
char s[] = { "abcabcbb" };
printf("%d",lengthOfLongestSubstring(s));
}

调试的时候显示读取字符串字符时出错。
怎么想也想不明白,请问各位解答。
...全文
628 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
636f6c696e 2018-10-26
  • 打赏
  • 举报
回复
if语句多一个分号,while里面应该是*s
自信男孩 2018-10-26
  • 打赏
  • 举报
回复
while (s != 0)
while (*s != 0)

s是指针不是字符,因此应该是*s和0比较
云山大侠 2018-10-26
  • 打赏
  • 举报
回复
还需要说明的是,你的while判断是写错了,还是本来是这么设计了,s !=0 ;s是一个指针,你是不是要写成*s != 0
云山大侠 2018-10-26
  • 打赏
  • 举报
回复
  if (a[*s - 'a'] == 2);
{




这个地方有一个分号 , 因为这个分号的存在,这个是一个死循环,S指针会一直自增,然后超出分配的内存区域,就溢出了。
云山大侠 2018-10-26
  • 打赏
  • 举报
回复
这种错误一般是内存溢出,要么数组溢出了,要么没有分配内存。
通过本课程学习您可以学习到Dart语言如下知识:第1章 Dart语言概述:Dart语言简介、Dart语言支持平台开发、Flutter为什么选择Dart语言。第2章 开发环境搭建:下载Dart SDK、Windows下安装Dart SDK、macOS下安装Dart SDK、Visual Studio Code开发工具、IntelliJ IDEA开发工具。第3章 完成个Dart程序:动动手写一个HelloWorld、Dart源代码文件组织结构、Visual Studio Code调试Dart代码、IntelliJ IDEA调试Dart代码。第4章 Dart语法基础:标识符、关键字、变量、常量、注释、库。第5章 Dart数据类型:数值类型、字符串、数据类型相互转换、布尔类型和枚举类型第6章 运算符:算术运算符、算术赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符、类型检查运算符。第7章 控制语句:分支语句、循环语句、跳转语句。第8章 函数:函数声明、可选参数、头等函数(first-class function)、匿名函数。第9章 类:类声明、getter和setter访问器、构造函数、静态变量和静态方法、级联符号。第10章 继承与多态:Dart中的继承实现、调用父类构造函数、成员变量的覆盖(Override)、方法的覆盖(Override)、多态、混入(Mixins)。第11章 抽象类与接口:抽象类、接口、Dart中隐式接口、实现接口。第12章 数据容器:List容器、Set容器、Map容器、泛型。第13章 异常处理:捕获异常、try-on捕获异常、try-catch捕获异常、try-on-catch捕获异常、使用finally代码块、手动抛出异常、自定义异常类。第14章 异步编程:Dart异步处理机制、案例:同步函数实现读取文件、案例:异步函数实现读取文件、Future对象。  

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧