你怎么知道用 malloc() 分配多少空间?

2024-03-18

我是一个完全的 C 新手,我来自 C#。我一直在学习内存管理和malloc()功能。我也遇到过这段代码:

char *a_persons_name = malloc(sizeof(char) + 2);

我不明白这是分配了多少空间a_persons_name。是分配 2 个字符(例如 AB)还是其他字符?

我也知道有时你会“幸运”malloc并使用未分配的空间(这可能导致数据损坏和段错误)。那么我如何知道我分配了多少空间以及我需要多少空间?


该片段为 2 个字符的名称分配了足够的空间。

一般来说,字符串缓冲区将从某个地方填充,即 I/O。如果提前未知字符串的大小(例如从文件或键盘读取),通常使用以下三种方法之一:

  • 定义任何给定字符串的最大大小,分配该大小 + 1(对于空终止符),最多读取那么多字符,如果提供太多字符,则出错或盲目截断。用户不太友好。

  • 分阶段重新分配(最好使用几何级数,例如加倍,以避免二次行为),并继续阅读直到到达末尾。编码并不容易。

  • 分配一个固定的大小并希望它不会被超过,并且当这个假设失败时会严重崩溃(或被拥有)。易于编码,易于破解。例如,参见gets在标准C 库中。 (切勿使用此功能。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

你怎么知道用 malloc() 分配多少空间? 的相关文章

  • 进程何时获得 SIGABRT(信号 6)?

    C 中进程获得 SIGABRT 的场景有哪些 该信号是否始终来自进程内部 或者该信号可以从一个进程发送到另一个进程吗 有没有办法识别哪个进程正在发送该信号 abort 向调用进程发送SIGABRT信号 就是这样abort 基本上有效 abo
  • 迭代变量并查找特定类型实例的技术

    我想迭代进程中内存中的变量 通过插件动态加载 并查找特定类型的实例 以前我可以找到特定类型 或内存中的所有类型 我可以创建类型的实例 我可以获取作为不同类型的字段包含的实例 但我无论如何都不知道只是 搜索 特定类型的实例 一种方法是使用 W
  • C#动态支持吗?

    看完之后这个帖子 https stackoverflow com questions 2674906 when should one use dynamic keyword in c sharp 4 0k和链接 我还有 2 个问题 问题 1
  • 向 ExpandoObject 添加方法时,“关键字 'this' 在静态属性、静态方法或静态字段初始值设定项中无效”

    我尝试向 ExpandoObject 添加一个动态方法 该方法将返回属性 动态添加 给它 但它总是给我错误 我在这里做错了什么吗 using System using System Collections Generic using Sys
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • 显示异常时的自定义错误消息:从客户端检测到潜在危险的 Request.Form 值

    我在我的 Web 应用程序中使用 ASP NET 的登录控件 当发生此异常时 我想在标签上显示一种有趣的错误类型System Web HttpRequestValidationException A potentially dangerou
  • JSON 数组到 C# 列表

    如何将这个简单的 JSON 字符串反序列化为 C 中的列表 on4ThnU7 n71YZYVKD CVfSpM2W 10kQotV 这样 List
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • 当前的 c++ 工作草案与当前标准有何不同

    通过搜索该标准的 PDF 版本 我最终找到了这个链接C 标准措辞草案 http www open std org jtc1 sc22 wg21 docs papers 2012 n3376 pdf从 2011 年开始 我意识到我可以购买最终
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 在非活动联合成员上使用“std::addressof”是否定义明确[重复]

    这个问题在这里已经有答案了 下面的代码是尝试实现constexpr的版本offsetof在 C 11 中 它可以在 gcc 7 2 0 和 clang 5 0 0 中编译 这取决于申请std addressof工会非活跃成员的成员 这是明确
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • g++ 对于看似不相关的变量“警告:迭代...调用未定义的行为”

    考虑以下代码strange cpp include
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • strcmp 给出分段错误[重复]

    这个问题在这里已经有答案了 这是我的代码给出分段错误 include

随机推荐

  • finishActivity() - 使用确切的请求代码关闭所有活动

    我是 android 新手 但还在战斗 我决定编写 mp3 播放器 我的一些任务有问题 我想从文件浏览器中选择要播放的文件 它是这样实现的 A类的Activity启动B类的Activity 然后开始了几次B班的活动 每次用startActi
  • 如何使用 HTML5 Canvas 作为 WebGL 纹理

    我想要 为情况 i 设置统一值 将案例 i 的计算着色器渲染为 HTML5
  • 部署没有依赖项的 Scala 二进制文件

    有没有一种简单的方法可以将 Scala Jar 1MB 复制到服务器 然后让 SBT 提取它所需的依赖项 40MB 并运行它 我见过 sbt onejar 和sbt组装 https github com sbt sbt assembly 但
  • jQuery:将 ajaxForm 绑定到通过 .load() 加载的页面上的表单

    我正在使用 jQuery 的 ajaxForm 插件在我的 web 应用程序上提交表单 然而 在应用程序的一部分中 我通过 jQuery 的 load 加载一些带有表单的内容 问题在于我无法让 ajaxForm 绑定到通过 ajax 加载的
  • 如何使用 tar 提取没有文件夹结构的文件

    我有一个具有以下结构的 tar gz 文件 folder1 img gif folder2 img2 gif folder3 img3 gif 我想提取没有文件夹层次结构的图像文件 因此提取的结果如下所示 img gif img2 gif
  • 为什么在 .NET 中分发应用程序的调试版本是一种不好的做法?

    Reading 这个问题 https stackoverflow com questions 5100947 how can i have different properties and such in a vs 2010 setup p
  • 使用 gettext 和 jinja2 以及金字塔翻译 %%

    使用 Jinja2 和 Pyramid 与 Python 进行 i18n 工作 似乎不知道如何翻译 我开始怀疑这个 bug 存在于 Jinja2 中 所以我做了更多的调查 看来问题更多的是 gettext 而不是 jinja2 如 repl
  • iOs 设备特定资源无法正常工作 - ~iPad 加载默认 XIB - 通用应用程序

    我正在制作一个基于实用程序应用程序模板的通用应用程序 我选择了一个通用应用程序 MainView xib 和 MainView iPad xib 在两种设备类型上都能正常工作 在iPad2上 当我切换到FlipsideView时 它会加载F
  • Django ORM - .update(...) 以及 extra(...) 和 F(...)

    我想做一个 sql 查询来更新 Django 站点中的许多模型 我想更改一个字符列 字段以基于 id 和一些文本 在 MySQL 这个站点就是 中 我会这样做 UPDATE table SET blah prefix id suffix 我
  • C# (.NET) 中是否有更好的 Web 浏览器控件?

    我需要 JavaScript 在我的应用程序中几乎完美地工作 应该能够访问 Web 内容并让用户控制它 但是 webbrowser 组件会在 Internet Explorer 的单独实例 应用程序中弹出新窗口 并且 dotBrowser
  • 整合 ASP.NET MVC 控制器依赖关系 (StructureMap)

    我正在查看我网站中的控制器 它们的大多数构造函数如下所示 public SomeController IServiceOne serviceOne IServiceTwo serviceTwo ILoggingService logging
  • 在 Kafka 中设计生产者和消费者组件

    我在用Kafka and Zookeeper作为我的数据管道的主要组件 该管道每秒处理数千个请求 我在用Samza作为我需要对数据进行小型转换的实时数据处理工具 我的问题是我的一位消费者 比方说ConsumerA 消耗了几个主题Kafka并
  • 创建多个 csv 文件并使用 Rails 将所有内容下载到一个 zip 存档中

    我正在寻找一种方法来创建多个 csv 文件 并在 Rails 应用程序的一个请求中将它们作为一个 zip 存档下载 为了构建存档 我使用 ruby zip gem 只需使用 Rails 内置函数 send data 即可下载它 我遇到的问题
  • 如何在 Android Studio 中导入 dropbox Chooser SDK?

    https www dropbox com developers dropins chooser android https www dropbox com developers dropins chooser android 我正在尝试在
  • 修改Robot Framework中的列表列表

    我有一个在机器人框架中使用的嵌套列表 我想更改机器人框架级别的子列表中的一项 我的清单如下所示 鲍勃 玛丽 六月 七月 八月 我想将 七月 更改为其他名称 例如 九月 机器人框架将允许我更改 bob 或 mary 但如果我尝试插入列表 它会
  • 我们可以从worker/minion节点运行kubectl吗?

    我有 kubernetes 集群设置 我想检查工作程序 minion 节点中的节点 我们可以从工作程序 minion 节点运行 kubectl 吗 是的 您只需要拥有正确的客户端凭据 就可以从可以通过网络访问 apiserver 的任何地方
  • Windows 登录集成

    我正在出于某种目的构建面部识别软件 但是 作为衍生产品 我想使用相同的软件 概念 当我坐在电脑前时自动识别我并登录 处理识别 但是 我需要将其合并到 Windows 中 就像指纹登录的工作方式一样 我可以去哪里获取有关执行此操作的更多信息
  • 使用 wicked_pdf 从生成的 PDF 生成 ZIP

    在我的发票系统中 我需要一个备份功能来一次性下载所有发票到一个 zip 文件中 该系统在 Heroku 上运行 因此只能临时保存 pdf 我安装了 ruby zip 和 wicked pdf gem 我当前在控制器中的代码 def zip
  • 垃圾收集线程太多

    我正在用java开发一个软件 它在接收到事件 来自传感器 时创建一个线程 这些线程的生存时间非常短 传感器发送最多 10 个事件 分钟 这个应用程序在大多数情况下都运行良好 但有时它会挂起 当查看 eclipse 调试器时 我发现有很多线程
  • 你怎么知道用 malloc() 分配多少空间?

    我是一个完全的 C 新手 我来自 C 我一直在学习内存管理和malloc 功能 我也遇到过这段代码 char a persons name malloc sizeof char 2 我不明白这是分配了多少空间a persons name 是