gpt4 book ai didi

c - 在 C 编程中需要有关 malloc 的帮助。它正在分配比预期更多的空间

转载 作者:太空狗 更新时间:2023-10-29 15:11:06 29 4
gpt4 key购买 nike

首先让我说我是新手,我在学校的入门级 C 类课。

我正在编写一个要求我使用 malloc 的程序,而 malloc 在所有情况下分配的空间都是我期望的 8 倍。即使只是 malloc(1),它也分配了 8 个字节而不是 1 个字节,我很困惑为什么。

这是我测试过的代码。这应该只允许输入一个字符加上转义字符。相反,我可以输入 8,所以它正在分配 8 bytes而不是 1 ,即使我只在 malloc() 中使用整数也是如此.请忽略x变量,在实际程序中用到,本次测试中不用。 :

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


int main (int argc ,char* argv[]){

int x = 0;
char *A = NULL;
A=(char*)malloc(sizeof(char)+1);
scanf("%s",A);
printf("%s", A);
free(A);
return 0;
}

最佳答案

 A=(char*)malloc(sizeof(char)+1);

将分配至少 2 个字节(sizeof(char) 始终为 1)。我不明白你是如何确定它正在分配 8 个字节,但是允许 malloc 分配比你要求的更多的内存,永远不会少。

您可以使用 scanf 将更长的字符串写入 A 指向的内存这一事实并不意味着您已经分配了该内存。它会覆盖其中的任何内容,这可能会导致您的程序崩溃或产生意外结果。

关于c - 在 C 编程中需要有关 malloc 的帮助。它正在分配比预期更多的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4888225/

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