gpt4 book ai didi

c++ - 指针错误传值

转载 作者:太空狗 更新时间:2023-10-29 23:32:30 25 4
gpt4 key购买 nike

我不明白为什么会崩溃。我发送一个指向数组的指针,分配该数组然后修改数组。有什么问题?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void f(unsigned char *data) {
data = (unsigned char *)malloc(200);
}

int main() {
unsigned char *data = nullptr;
int i;
f(data);
memset(data, 0, 200);
}

最佳答案

您正在按值将 data 传递给 f()

f() 设置其参数的值。

因为参数是按值传递的,所以这对 main() 中的 data 变量完全没有任何作用。 f() 泄漏了分配的内存,当它返回时,main()data 仍然是nullptr .

您应该通过引用传递它:

void f(unsigned char *&data)

或者,更好的是,返回它。 f() 不需要参数。

unsigned char *f() {
return (unsigned char *)malloc(200);
}

关于c++ - 指针错误传值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38135059/

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