gpt4 book ai didi

c - malloc 返回的字符串大小不正确

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

为什么下面分配的字符串(即 result)的大小在下面的代码中不正确

#include <stdlib.h>


char *concat(const char *s1, const char *s2)
{
char *result;

result = malloc( strlen(s1) + strlen(s2) + 1 );

printf("%d", sizeof(result)); // <-- ????? ( it should be seven)

if ( result == NULL ){
printf("Error: malloc failed in concat\n");
exit(EXIT_FAILURE);
}

strcpy(result, s1);
strcpy(result, s2);


return result;
}

int main()
{
char *p;
p = concat("abc", "def");

return 0;
}

编辑:我正在尝试为新字符串分配足够的大小,但不知何故大小不正确。

最佳答案

在这种情况下,sizeof 是在编译时求值的,它不关心分配 block 的大小。

表达式返回指针的大小,这是硬件平台固定的。

不幸的是,无法找到 malloc 返回的分配大小。如果您想知道已分配 block 的大小,您需要将大小存储在一个单独的变量中。

关于c - malloc 返回的字符串大小不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27760205/

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