gpt4 book ai didi

c - munmap_chunk() : invalid pointer

转载 作者:太空狗 更新时间:2023-10-29 16:24:22 43 4
gpt4 key购买 nike

我发现了我的程序中的错误,并决定编写一个简单的程序,这将帮助我了解发生了什么。在这里:

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

char * first()
{
char * word = malloc(sizeof(char) * 10);
word[0] = 'a';
word[1] = 'b';
word[2] = '\0';
return word;
}

char * second ()
{
char * word = malloc(sizeof(char) * 10);
word = "ab";
return word;
}

int main ()
{
char * out = first();
printf("%s", out);
free(out);
out = second();
printf("%s", out);
free(out);
return 0;
}

first() 函数工作正常,但是 second() (正是 free(out) )生成错误:

Error in `./a.out': munmap_chunk(): invalid pointer: 0x0000000000400714 *** ababAborted (core dumped)

我不明白为什么第一个函数是正确的,而第二个函数却不正确。谁能解释一下为什么?

最佳答案

在函数second()中,赋值word = "ab";word赋值一个新的指针,覆盖获得的指针通过 malloc()。稍后在指针上调用 free() 时,程序崩溃,因为您传递了一个指向 free() 的指针,而该指针尚未通过 malloc() 获得

分配字符串文字不会像您想象的那样具有复制其内容的效果。要复制字符串文字的内容,请使用 strcpy():

strcpy(word, "ab");

关于c - munmap_chunk() : invalid pointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32118545/

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