gpt4 book ai didi

c++ - 使用 malloc 进行动态内存分配

转载 作者:行者123 更新时间:2023-12-01 14:51:45 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Passing a Pointer into a Function and Modifying it

(3 个回答)



Is passing pointer argument, pass by value in C++?

(5 个回答)


1年前关闭。



    # include<stdio.h> 
# include<stdlib.h>

void fun(int *a)
{
a = (int*)malloc(sizeof(int));
}

int main()
{
int *p;
fun(p);
*p = 6;
printf("%d\n",*p);
return(0);
}
为什么上面的代码无效?为什么会出现段错误?

最佳答案

因为a本身是按值传递的,那么函数中对其自身的任何修改都与参数无关。
您可以将其更改为按引用传递

void fun(int *&a) 
{
a = (int*)malloc(sizeof(int));
}
顺便说一句:在 C++ 中更好地使用 new (和 delete ),或者不要从一开始就使用原始指针。

关于c++ - 使用 malloc 进行动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63048903/

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