【问题标题】:command shell and 128 bytes命令外壳和 128 字节
【发布时间】:2012-03-15 18:35:19
【问题描述】:

这个this 的具体例子,为什么只有128 个字节被分配给psBuffer? 我尝试将命令修改为“dir /s c:\”,它提供了超过 128 字节的输出,但程序运行良好,没有任何溢出。

我很想知道这个例子中 128 字节的意义。

【问题讨论】:

  • 似乎每行只读取 128 个字节......所以 dir /s 返回的大量文件并不重要,重要的是 dir 命令返回的每一行的输出.对吗?

标签: windows memory-management command-line popen


【解决方案1】:

它只是一个缓冲区的大小,代码一次最多读取 128 个字节到这个缓冲区中循环

【讨论】:

  • 是的,我刚刚想通了。但为什么只有 128 个字节?
  • 这并不重要,但是让它比典型的行更长是有道理的。如果您将代码中的所有 128 更改为 64 或 256 或 4096,它应该仍然可以工作。 (请注意,这是一个来自你知道的人的非常糟糕的代码示例 - 128 应该全部定义为单个 const)。
  • 没关系。如果你愿意,你可以分配更多;我认为 128 在这里是任意选择。
  • 因为 128 字节对于大多数输入来说已经足够长了 - 程序将截断任何更长的内容。编写样本的人认为 128 就足够了——毕竟这只是一个样本。如果你想知道为什么是 128 而不是 96 或 200,可能是因为程序员喜欢用 2 的幂来思考,而作者可能认为 64 太小了。
  • 程序不会截断 - 正如@Paul 指出的那样,它在这里处于循环状态。
猜你喜欢
  • 2021-03-27
  • 2015-10-19
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
相关资源
最近更新 更多