c++ - 内存使用量与数据大小相同吗?
问题描述
我正在对变量进行 SHA3 算法的性能测试,我正在检查不同大小的变量的算法执行时间。为此,我正在使用 char 类型并增加它的大小,但我不知道我是否有效地正确执行了它。我将使用下面的代码行来解释我的疑问。
char[1000] = "A text";
我知道每个字符的大小为 1 字节。我的问题是:当我预定义一个向量时,变量的大小是否会成为向量的索引,在本例中为 1000?或者变量的大小将由其中的内容给出,在这种情况下由文本给出,即 6 字节?
我做的测试对吗?或者分配的内存大小不考虑SHA3的性能?(我问这个是因为我打算用更大的值做同样的测试。例如,如果我想用 20 KB 做这个测试,我是否必须用 20000 个字符填充变量?)
我正在使用 C++。
解决方案
该行代码在堆栈上分配的内存量将是 1,000 字节。但是,您发送到 SHA3 代码的内容可能只是字符串“A text”的字节数,具体取决于您如何调用它,以及它如何使用数据。如果它使用类似的函数计算字符串的长度strlen()
,那么它可能只会遍历字符串的 6 个字符(和 1 个 NUL 字节)并忽略剩余的 993 个字节。因此,这实际上取决于您如何使用它以及如何计算测试的大小。
推荐阅读
- java - 如何以编程方式删除添加的视图
- excel - 错误地声明变体以指定单个单元格
- java - 音频完成后更改背景颜色
- python - Appium - 定义隐藏在汉堡菜单后面的元素
- vba - 如何在发送前删除电子邮件正文中的文本?
- python - Pandas 两个数据框在 CIDR 中查找 IP 并在 CIDR 列中映射
- android - 在 64 位 Android 设备上从 Google Play 商店安装应用程序时,如果应用程序支持,该应用程序是否安装为 64 位?
- javascript - 如何改为将 console.log 写入文件
- reactjs - React.js 中的间歇性类型错误
- ios - 谷歌平面缓冲区 iOS