Mac 上的内存位置从 0 到 1 一致变化

问题描述 投票:0回答:1

我有一台 2019 款 MacBook Pro i9,内存为 64GB。昨晚,由于内存损坏,我出现了内核恐慌(仅一次)。所以,今天,我用 C++ 编写了一个小程序来分配和探测大量内存,用交替的 0 和 0xff 设置内存位置,然后检查内存是否保持不变。这是:

#include<stdlib.h>
#include<stdio.h>
int main(int argc,char **argv)
{
    printf("Allocating...\n");
    unsigned char* mem = (unsigned char*)malloc(52949672960);
    if(!mem) { printf("alloc error!\n"); return 1; }
    printf("Filling memory...\n");
    for(long i=0;i<52949672960;i+=2) { mem[i]=255; mem[i+1]=0; }
    printf("Testing memory...\n");
    for(long i=0;i<52949672960;i+=2) {
        if(mem[i]!=255) printf("ERROR!! Loc %lu was %d instead of %d\n",i,mem[i],255);
        if(mem[i+1]!=0) printf("ERROR!! Loc %lu was %d instead of %d\n",i+1,mem[i+1],0);
    }
    free(mem);
    printf("Complete!\n");
    return 0;
}

令我恐惧的是,我在 1 个内存位置上不断收到错误,例如:

stormlord@MacBook-Pro mem % ./test
Allocating...
Filling memory...
Testing memory...
ERROR!! Loc 917863483 was 1 instead of 0
Complete!

我注意到一个主题,地址(在本例中为 917863483)是十六进制的 0x36B57C3B,以 C3B 结尾,情况总是如此 - 地址总是以 C3B 结尾,并且总是从 0 到 1。所以我我认为它是相同的物理内存位置,但它显示在我的数组中的不同位置,因为显然,物理内存不会每次都排列相同。 (旁注:我意识到我的测试可能应该遍历相同的内存并在第二遍中写入/验证相反的字节)。

我在网上读到,按住 OPT + CMD + R + P 的同时重新启动计算机将破坏 PRAM,它可以帮助解决一般硬件问题。自从我这样做以来,我的测试一直通过,但我仍然不舒服。这听起来像是硬件损坏吗?还是我没问题?

macos memory hardware panic memory-corruption
1个回答
0
投票

好吧,如果这种情况发生在任何人身上,并且您使用的 MacBook 不是老式的,请准备好购买带有处理器、内存、SSD 和图形芯片的新主板。这是糟糕的记忆,这就是我需要做的来修复它。所有新的内脏。

© www.soinside.com 2019 - 2024. All rights reserved.