void OneDToTwoD(char* rel){
/* all the declarations here */
while(rel[i] != '\0'){
i++;
}
...
在上面的代码中,我得到的所有“有时”都是分段错误。和valgrind检查抛出“无效读取大小1”在我的行
while(rel[i] != '\0'){
在那一行中,我试图找出rel
的长度。
我知道必须有更好的方法来做到这一点。我不能只做sizeof
吗?
答案 0 :(得分:2)
如果i
初始化为零,并且rel
指向有效的内存块,这将很有效。
rel
指向无效的内存块或NULL。\0
i
未以0开头。还有一个答案,你无法从指针知道内存块的大小。指针不是内存块。如果需要,指针可以指定无效的内存块。因此,如果您想知道内存块的长度,请将length
参数添加到函数中。