我在 C++ 工作,最近经常使用指针。我发现有几种方法可以初始化我需要使用的内存块。
void functioncall(int* i)
{
*i = *i + 1;
}
int main(){
int* a = (int*)malloc(sizeof(int));
int az = 0;
functioncall(a);
functioncall(&az);
}
请注意,第一个变量 int* a 被声明为指针,然后我为其分配了内存。但是,对于 az,它不是一个指针,而是在调用函数时我得到内存的地址。
所以,我的问题是:是否有一种首选方式 =,或者是否有任何惩罚?
最佳答案
int* a = (int*)malloc(sizeof(int));
这会在堆上分配内存。你必须自己解除分配,否则你会遇到内存泄漏。您可以通过调用 free(a);
来释放它。此选项绝对较慢(因为必须请求内存并且必须完成一些其他后台操作)但只要您调用 free,内存就可用。
int az = 0;
这会在堆栈上“分配”内存,这意味着当您离开声明它的函数时它会自动销毁(除非有一些非常罕见的异常(exception))。您不必整理内存。此选项速度更快,但您无法控制对象何时被销毁。
关于c++ - int* 变量或 int 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7664137/