gpt4 book ai didi

对这些指针重新分配感到困惑

转载 作者:行者123 更新时间:2023-11-30 15:23:43 25 4
gpt4 key购买 nike

有人能解释一下下面的代码在做什么吗?尤其是多次出现的这个结构:

*ptr1 = (char*)ptr1;

完整代码:

char * buf;

void initialize(int set){
int j, k;
char ** ptr1, ** ptr2;
char * tmp;

for (j=0; j<ASSOC; j++){
ptr1 = (char **)&buf[set*LINE_SIZE+j*WAY_SIZE]; // LINE_SIZE=64, WAY_SIZE=256K, ASSOC=16, 15*256K+64
*ptr1 = (char*)ptr1;
}

// permute each set
for (j=ASSOC-1; j>=1; j--){
k = rand()%j;
ptr1 = (char **)&buf[set*LINE_SIZE+j*WAY_SIZE];
ptr2 = (char **)&buf[set*LINE_SIZE+k*WAY_SIZE];
tmp = *ptr1;
*ptr1 = *ptr2;
*ptr2 = tmp;
}
}

此外,我认为在没有 malloc 的情况下指向 buf 位置的指针是一种不好的做法,因此请不要在这个问题上花时间。

最佳答案

*ptr1 = (char*)ptr1;

将其自己的地址分配给 ptr 指向的内存位置。

整个函数将通过 buf 寻址的一些位置初始化为它们各自的地址,然后随机地对它们进行洗牌。

关于对这些指针重新分配感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28669001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com