gpt4 book ai didi

c - 如何正确转换以将指针与显式地址范围进行比较?

转载 作者:行者123 更新时间:2023-11-30 14:35:30 24 4
gpt4 key购买 nike

我做了一些 malloc,然后我想检查 malloc 的结果是否在我的 RAM 中,如下所示:

char (*message)[];
message = malloc(data_index);
if(message != NULL && message >= 0x20000000 && message < 0x20030000){
//do something
}

它有效,但我收到一个警告:指针和整数之间的比较。我想摆脱这个警告,但是如何呢?当我将整数转换为 char 时,警告消失了,但这显然是一个错误的解决方案。

if(message >= (char)0x20000000) {

我还尝试将其转换为双指针,我认为这是正确的类型,但警告仍然存在。

if(message >= (char**)0x20000000) {

如何在没有警告的情况下获得 woking if 语句?

最佳答案

你可能想要这样的东西:

char *message;
message = malloc(data_index);
if(message != NULL && message >= (char*)0x20000000 && message < (char*)0x20030000){
// will do something
// if message contains an address between 0x20000000 and 0x20030000
}

请注意,这仅在特定硬件上有意义(您没有提及您的目标系统)。

在现代桌面系统(Mac/Windows/Linux)上,这没有意义,因为所有内存地址都是虚拟的。

关于c - 如何正确转换以将指针与显式地址范围进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58482757/

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