gpt4 book ai didi

c - 为什么这个程序崩溃是我错误地分配了内存

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:32 25 4
gpt4 key购买 nike

这个程序崩溃了。请告诉我它有什么问题。当我在结构中使用数组而不是像 Name[12] 这样的指针时,它不会崩溃。我猜动态内存分配有问题。请帮忙。

#include <stdio.h>

struct struct_tag
{
int number;
char *Name;
} struct_name;


main()
{
struct_name.number = 34;

char *Name = (char *) malloc(sizeof(char));
strcpy(struct_name.Name,"A");

printf("%d", struct_name.number);
}

最佳答案

您分配的是单个字符:

char *Name = (char *) malloc(sizeof(char));

然后永远不要将那段内存用于任何事情。毫无疑问,您打算为 struct_name.Name 分配内存。但即使您这样做了,您也会用两个字符('a''\0')填充它:

strcpy(struct_name.Name,"A");

这将导致完全不同的错误。

说:

struct_name.Name = malloc( 2 );

因为 (a) 您不应该转换 malloc() 的结果,并且 (b) sizeof(char) 总是 1 (c) 您需要在字符串末尾为 0 留出空间。

关于c - 为什么这个程序崩溃是我错误地分配了内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25623935/

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