【发布时间】:2023-03-13 08:29:01
【问题描述】:
我目前正在学习 C 中的动态内存分配,但对某个特定概念有困难。为了将 malloc 用于特定整数,我需要在该空间内放置一个先前声明的整数。
以下是我作为代码输入的内容。
void example(int ab)
{
int* intPtr=(int*)malloc(sizeof(int));
*intPtr = &ab;
}
我不想运行程序或任何东西。我只是想看看我是否对一些基本的内存分配有正确的想法。
【问题讨论】:
-
没有必要对
malloc()进行类型转换,因为它是由编译器隐式完成的。阅读Do I cast the result of malloc?。这个int* intPtr = malloc(sizeof(int));很好。 -
ab在堆栈上已经有一个空间,在 C 内存中,局部变量在堆栈上分配了一个静态时间,根据 Sack 指针的偏移量。您可以阅读 C 中用于静态内存分配的存储类。您也不能在运行时更改 c 中任何变量的地址。 -
这是真的我已经了解了堆栈以及如何分配局部变量。因此,如果我假设在这种情况下声明一个新变量,我会这样做:*intPtr=int x?