gpt4 book ai didi

c - 函数中的 malloc 不能正常工作

转载 作者:行者123 更新时间:2023-12-02 06:19:47 26 4
gpt4 key购买 nike

我不明白为什么整个事情都不起作用。

我只想在函数 func 中执行 malloc,当我从它返回时,malloc 消失了......我得到

* glibc detected ./test: free(): invalid pointer: 0xb76ffff4 **

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#include <string.h>
#include <errno.h>

int func(char *p) {
p=(char*)malloc(1);
*p='a';
printf("1. p= %c\n",*p);
return 0;
}

int main()
{
char *p;

func(p);
printf("2. p= %c\n",*p);
free(p);

return 0;
}

最佳答案

char *p;

在 main() 中创建一个局部指针,你可以将它传递给另一个函数,但是你是按值传递它,所以你对它所做的任何更改(比如更改它指向的内容)在范围之外。不会“坚持”。

解决方案是传递一个指向指针的指针,或者简单的传递p的地址:

func(&p);

但不要忘记更改 func() 的参数列表!

int func(char **p)

关于c - 函数中的 malloc 不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13541990/

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