自修电脑引起的电脑异常噪音分析及解决办法

2023-11-29 1138阅读

我常说,用电脑给医生治病,就像用人给医生治病一样。你需要看到、听到并提出问题。步骤之一是倾听。而且,如果电脑出现问题或者使用时间较长,也可能会发出一些异常的声音。由于计算机中能够发出声音的部件并不多,所以它实际上并没有发出声音。它并不复杂,但对于普通计算机用户来说,可能会感到困惑。下面我们就来解决一下电脑噪音异常的问题。可能没有显卡风扇,即使是没有独立显卡的电脑,也可能没有独立显卡。如果异常噪音来自风扇,则要么是润滑不当,要么是灰尘过多、阻力太大。解决办法是增加润滑并清除灰尘。说明硬件有问题,主板自检已发出报警。

我常说,用电脑给医生治病,就像用人给医生治病一样。 你需要看到、听到并提出问题。 步骤之一是倾听。 而且,如果电脑出现问题或者使用时间较长,也可能会发出一些异常的声音。 由于计算机中能够发出声音的部件并不多,所以它实际上并没有发出声音。 它并不复杂,但对于普通计算机用户来说,可能会感到困惑。 下面我们就来解决一下电脑噪音异常的问题。

首先,我们列出计算机中可能产生声音的组件:

第一:肉眼可见的几个风扇

当然,如果你的电脑出现问题,就需要开箱了。 电脑机箱不是什么高科技,通常打开机箱不会影响电脑,所以你可以勇敢一点。

打开机箱,可以看到里面有三个风扇,分别是机箱电源风扇、CPU风扇、显卡风扇。

响声硬盘启动电脑有杂音_电脑硬盘启动有异响_电脑启动硬盘有响声

可能没有显卡风扇,即使是没有独立显卡的电脑,也可能没有独立显卡。

自修电脑引起的电脑异常噪音分析及解决办法

响声硬盘启动电脑有杂音_电脑硬盘启动有异响_电脑启动硬盘有响声

因此,对于风扇异响最直接的答案就是听得见、看得见。 如果异常噪音来自风扇,则要么是润滑不当,要么是灰尘过多、阻力太大。 解决办法是增加润滑并清除灰尘。

二:硬盘的读写声音

硬盘应该是电脑中除了风扇之外唯一的机械设备,如下图所示。

电脑启动硬盘有响声_电脑硬盘启动有异响_响声硬盘启动电脑有杂音

有电机的旋转、磁头摆臂以及磁头与磁盘的接触。

由于不同的人对声音的感知不同,我实在无法形容正常的声音应该是“嘶嘶声”还是“嘶嘶声”。 不过平时可以留意一下,硬盘读写数据时,确实有声音。 看来现在硬盘的声音很安静了。 你必须记住正常时的声音。 那么当你发现硬盘的声音变成“嘎吱嘎吱”或者“嘎吱嘎吱”的声音时,就可能意味着硬盘出现了问题。 。

自修电脑引起的电脑异常噪音分析及解决办法

出现问题的硬盘通常会被更换,因为修复的费用可能足以或高于购买新硬盘的价格。 通常,硬盘维修修复的是数据,而不是硬盘。 昂贵的是数据,而不是硬盘。 因此,如果您感觉硬盘读取声音不对,就应该备份数据,以防发生意外。

第三:机箱喇叭的声音

电脑硬盘启动有异响_电脑启动硬盘有响声_响声硬盘启动电脑有杂音

好久没碰台式电脑了。 以前机箱有跳线接到主板上,然后电脑开机就发出嘟嘟的声音。 现在有些人告诉我他们的电脑没有发出蜂鸣声。 不知道是跳线没插还是取消了。 对于这个音箱,好像有的主板也有小音箱。

如果这个扬声器发出声音,除了“嘟嘟”声之外的所有声音通常都不是好事,可能发生了严重的事情。 说明硬件有问题,主板自检已发出报警。 不同的主板有不同的报警含义。 主板说明书上好像有说明。 你可以查一下你的主板说明书,看看有没有。

之前发过一篇关于主板报警声的解释的文章。 您可以点击查看常见主板报警声音分析! 当你遇到某人时,留下印象并产生好主意。

所以电脑异响就是这样的。 如果除上述异常声音外还有声音,则一定是电路烧毁的声音。 运气好的话,说不定还会伴随着火花,说不定还会发出“轰”的一声,好吧。 好吧,吓唬你一下,计算机通常不会爆炸。

在使用 C++ 编写代码时,您经常会遇到类似“异常抛出:读取访问权限冲突”之类的错误消息。 造成这种情况的主要原因有两个:

1. 访问数组越界

当使用线性表的顺序结构,如顺序链表、顺序队列、顺序堆栈等以数组方式存储数据时,如果要读取的数据的位置超过了当前数组的长度,则数组就会出现访问越界的情况。

但这不会导致编译错误。 也就是说,编译器在编译时不会指出你对数组的访问越界。 这个时候可能还是“0错误,0警告”

自修电脑引起的电脑异常噪音分析及解决办法

你还在暗自庆幸自己的代码没有bug,但是运行的时候却会抛出访问冲突异常。

例如:下面对队列和栈的操作

struct Stack              //这里定义了一个栈的结构
{
	int data[maxSize];    //定义存储栈中元素的数组
	int top;              //定义栈顶指针
};

struct Queue              //这里定义了一个队列的结构
{
	int elements[2000];   //定义一个长度为2000的数组存放队列中的元素
	int front;            //定义队头指针
	int rear;             //定义队尾指针
};

while (queueA->front < queueA->rear || queueB->front < queueB->rear) 
{
	queueA->front++;
	inStack(stack, queueA->elements[queueA->front]);
	outStack(stack, queueA);
	queueB->front++;
	inStack(stack, queueB->elements[queueB->front]);
	outStack(stack, queueB);
}
//inStack函数实现出队后进栈操作
//outStack函数实现出栈后入队操作,入队后队尾指针后移

编译成功,没有报错,但是运行后抛出读访问权限冲突的异常。

自修电脑引起的电脑异常噪音分析及解决办法

自修电脑引起的电脑异常噪音分析及解决办法

此时我们查看局部变量的状态,可以发现队列A的头指针和尾指针都指向异常下标。

自修电脑引起的电脑异常噪音分析及解决办法

这显然导致了越界访问,因为对于长度为2000的数组来说,下标值应该是0~1999。

后来发现错误出在while循环确定的条件上。 初衷是当A和B之间任一队列的元素为空时跳出循环。 但判断条件中的逻辑被错误地写成了逻辑OR,导致跳出循环出现延迟。 最终,队列A的头指针和尾指针在不断的循环操作过程中超出了数组边界,出现了读访问权限冲突异常。

自修电脑引起的电脑异常噪音分析及解决办法

修改while的判断条件后,程序可以正常运行。

因此,如果遇到读访问权限冲突,如果读取数组中的数据时出现异常,可以首先考虑是否由于某些不当操作导致对数组的访问越界。

2. 空指针异常

这主要发生在通过指针读取数据时,例如使用链表时。

示例:链表中的操作

struct Node              //这里定义了一个结点
{
	int data;
	Node* next;
};

LinkListInvert::LinkListInvert(int arg[],int n)
{                            //重载构造函数对链表进行初始化
	Node* r = first;
	Node* s = nullptr;
	for (int i = 0; i < n; i++)
	{
		s = new Node;
		s->data = arg[i];
		r->next = s;
		r = s;
	}
	r->next = nullptr;
}

自修电脑引起的电脑异常噪音分析及解决办法

代码编译没有错误,但是运行后出现读取权限异常。

自修电脑引起的电脑异常噪音分析及解决办法

这里不难看出,第一个指针还没有被初始化,使得第一个指针成为空指针,指向一个不确定的值,以及后续的操作

	Node* r = first;

r指针也变成空指针,下次操作时抛出读权限冲突异常。

LinkListInvert::LinkListInvert(int arg[],int n)
{
	first = new Node;           //此处为修改的地方,对first初始化
	Node* r = first;
	Node* s = nullptr;
	for (int i = 0; i < n; i++)
	{
		s = new Node;
		s->data = arg[i];
		r->next = s;
		r = s;
	}
	r->next = nullptr;
}

修改方法也非常简单。 初始化第一个指针后,就可以成功运行了。

同样,未初始化的指针引起的读访问权限异常也会给出0XCCCCCCC、0xCDCDCDD等异常提示。

自修电脑引起的电脑异常噪音分析及解决办法

当然,不仅仅是链表,很多其他情况也会出现空指针异常。 例如数据库查询中,指针未初始化时也会出现空指针异常。

总结

关于C++读访问权限冲突导致异常问题的这篇文章到此结束。 更多关于C++读访问权限冲突的信息,请搜索云海天教程之前的文章或继续浏览以下相关文章。 我希望你将来能找到他们。 请支持云海天教程!

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]