我有一个接受char*指针的C函数。其中一个函数的前提条件是指针参数必须是以空字符结尾的字符串。
void foo(char *str) {
int length = strlen(str);
// ...
}
如果
str
不是指向以null结尾的字符串的指针,那么strlen
会崩溃。有没有一种可移植的方法来确保char*指针确实指向以null结尾的字符串?我考虑使用
VirtualQuery
来查找str
之后最低的不可读地址,如果在str
的开头和该地址之间没有看到null终止符,则str
不指向以null结尾的字符串。
size-1
元素以寻找空值。 - Sourav GhoshVirtualQuery
时,你已经抛弃了可移植性。 - Yu Hao