gpt4 book ai didi

c - 如何清除保存内存位置起始位置的指针变量,该变量需要从起始位置清除 20 个字节的数据

转载 作者:行者123 更新时间:2023-11-30 21:40:42 25 4
gpt4 key购买 nike

指针变量保存的值只不过是内存位置的地址,需要清除接下来的 20 个字节的数据。

我尝试了下面的代码片段,但它清除了指针值的值(起始内存位置的地址)。通过这样做,我丢失了内存位置的起始地址(指针值)。

srcadr = 0x105fc080;

i = 20;

*srcptr = &srcadr

if(srcptr != NULL)
{

while (i < 20)

{
*srcptr++ = 0x00;
}

}

最佳答案

您的代码不完整。

但是我们假设第一行是有效的:

srcadr = 0x105fc080;

这意味着srcadr可以是无符号整型(或无符号长整型)。

然后我们需要将其视为指针,并从该地址清除 20 个字节:

volatile unsigned char * const area = (unsigned char *) srcadr;
for(int i = 0; i < 20; ++i)
area[i] = 0;

为了将地址值视为指针,必须进行强制转换。使用 &srcadr 根本没有任何意义,它为我们提供了 srcadr 指针变量的地址,这是不相关的。

future 读者请注意:如果可以的话,您当然可以像这样使用 memset():

memset((void *) 0x105fc080, 0, 20);

然后就完成了。但无论出于何种原因,OP 都无法使用它,例如,它可能是一个具有有限标准库的嵌入式环境(以及,呃,没有内在函数的沉闷编译器)。

关于c - 如何清除保存内存位置起始位置的指针变量,该变量需要从起始位置清除 20 个字节的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46711882/

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