最近,我在最近的一次采访中遇到了一个字符串操作问题,并被要求优化性能。我不得不使用迭代器在 TCHAR 字符之间来回移动(支持 UNICODE - 每个 2 字节)。
没有真正考虑数组长度,我犯了一个错误,没有使用 size_t 而是使用 int 进行迭代。我了解它不合规且不安全。
int i, size = _tcslen(str);
for(i=0; i<size; i++){
// code here
}
但是,我们可以分配的最大内存是有限的。如果 int 和寄存器大小之间存在关系,则使用整数可能是安全的。
例如:没有任何虚拟映射工具,我们只能映射 2^register-size 个字节。由于 TCHAR 的长度为 2 个字节,因此是该数字的一半。对于任何将 int 作为 32 位的系统,即使您不使用 int 的无符号版本,这也不会成为问题。有嵌入式背景的人曾经认为 int 是 16 位的,但是在这样的设备上内存大小会受到限制。所以我想知道整数和寄存器大小之间是否存在架构微调决定。