void OneDToTwoD(char* rel){
/* all the declarations here */
while(rel[i] != '\0'){
i++;
}
...
在上面的代码中,我“有时”遇到了段错误。 valgrind 检查在行中向我抛出“无效读取大小 1”
while(rel[i] != '\0'){
在那一行中,我试图计算出 rel
的长度。
我知道一定有更好的方法来做到这一点。我不能只做 sizeof
可以吗?
最佳答案
如果i
初始化为零,并且rel
指向有效的内存块,这将很好地工作。
rel
指向无效内存块或 NULL。- rel 不以
\0
终止 i
不以 0 开头。
还有一个答案,你无法从指针知道内存块的大小。指针不是内存块。如果需要,指针可以指定无效的内存块。因此,如果您想知道内存块的长度,请在函数中添加 length
参数。
关于c - 查找数组指针的长度 - Valgrind 错误 : Invalid read size of 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13577575/