gpt4 book ai didi

我可以在没有 malloc 的情况下释放指针地址吗?

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

让我们假设这段代码:

int i,j=0;
char* block = (char*) (0x9000);
char table[4]= {0x01,0x02,0x03,0x04};
for (i=0; i< 45567; i++) {
*(block +i)= table[j];
j++;
if (j==4)
j=0;
}

我想问:

  1. block 的内存是在堆栈还是堆中分配的?
  2. 此代码可能会出现什么问题?
  3. 我可以在此代码末尾使用 free(block) 吗?

最佳答案

您实际上没有分配任何内存,无论是在堆栈上还是在堆上。您只需将变量指向一个地址,然后假装那里的内存属于您。

这在 C 或 C++ 中都是不合法的,并且通常不起作用。 “不工作”在这里可以有任何含义。而且由于该代码是非法的,因此指针是否可以被释放的问题是没有意义的。

(在非常具体的设置中,如果编译器和硬件支持它,则用于写入特定的硬件地址。但这里不是这种情况。)

关于我可以在没有 malloc 的情况下释放指针地址吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32587575/

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