You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将字符串复制到内存时,使用malloc分配足够空间的正确语句咨询

字符串内存分配问题解答

要把字符串"Best School"复制到新内存空间,必须预留**包含末尾终止符\0**的足够空间。先明确:"Best School"有11个可见字符,加上\0一共需要12字节空间。以下是各选项的分析:

  • 选项A:malloc(sizeof("Best School"))
    C语言中,字符串字面量的sizeof会包含末尾的\0,sizeof("Best School")的结果是12,刚好满足存储需求,可行。

  • 选项B:malloc(strlen("Best School"))
    strlen只统计可见字符的数量(这里是11),不包含\0的空间。用这个分配的内存存字符串会缺少终止符,导致后续字符串操作出错,不可行。

  • 选项C:malloc(11)
    只分配了11字节,同样没给\0留位置,无法正确存储完整的C字符串,不可行。

  • 选项D:malloc(12)
    12字节刚好能放下11个可见字符加\0,满足存储需求,可行。

  • 选项E:malloc(sizeof("Best School") + 1)
    sizeof已经给出12字节的需求,加1后分配13字节,虽然多了1字节,但空间足够容纳目标字符串,可行(只是存在少量空间浪费)。

  • 选项F:malloc(strlen("Best School") + 1)
    strlen得到11,加1后是12,刚好覆盖字符和终止符的空间需求,可行。

总结:可行的选项是A、D、E、F。

内容的提问来源于stack exchange,提问作者Emmanuel Major

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:35:29