我不明白为什么会崩溃.我发送一个指向数组的指针,分配该数组然后修改数组.问题是什么?
#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);
}
Run Code Online (Sandbox Code Playgroud)
你是通过data价值来传递的f().
f() 设置其参数的值.
因为参数是通过值传递的,所以这对data变量绝对没有任何作用main().f()泄漏分配的内存,并且当它返回时,main()的data仍然是nullptr.
你应该通过引用传递它:
void f(unsigned char *&data)
Run Code Online (Sandbox Code Playgroud)
或者,更好的是,返回它.f()不需要参数.
unsigned char *f() {
return (unsigned char *)malloc(200);
}
Run Code Online (Sandbox Code Playgroud)