gpt4 book ai didi

c - 为什么我在字符串缓冲区中获得不同的大小?

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:51 24 4
gpt4 key购买 nike

为什么当我执行这段代码时:

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

int main(){
size_t size = 4;
char *str = malloc(size);
str = "hello";
printf("malloc %s: %d\n", str, size);
printf("strlen %s: %d\n", str, strlen(str));
printf("sizeof %s: %d\n", str, sizeof("hello"));
return 0;
}

我得到以下信息:

malloc hello: 4
strlen hello: 5
sizeof hello: 6

基本上,我只需要知道为什么如果我只分配 4 个字节,我可以存储一个 6 个字节大小的 5 个字符的字符串?

最佳答案

str = "hello" 行中,您正在重新分配指针以指向内存中创建 "hello" 的位置。您在这里所做的是让您的 malloc 发生小的内存泄漏,因为您不再拥有对请求的堆空间的引用。

关于c - 为什么我在字符串缓冲区中获得不同的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17476911/

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