查找数组指针的长度 - Valgrind错误:读取大小无效1

时间:2012-11-27 04:48:23

标签: c arrays valgrind

void OneDToTwoD(char* rel){

  /*  all the declarations here */

  while(rel[i] != '\0'){
    i++;
  }

...

在上面的代码中,我得到的所有“有时”都是分段错误。和valgrind检查抛出“无效读取大小1”在我的行  while(rel[i] != '\0'){

在那一行中,我试图找出rel的长度。  我知道必须有更好的方法来做到这一点。我不能只做sizeof吗?

1 个答案:

答案 0 :(得分:2)

如果i初始化为零,并且rel指向有效的内存块,这将很有效。

  1. rel指向无效的内存块或NULL。
  2. rel不会以\0
  3. 终止
  4. i未以0开头。
  5. 还有一个答案,你无法从指针知道内存块的大小。指针不是内存块。如果需要,指针可以指定无效的内存块。因此,如果您想知道内存块的长度,请将length参数添加到函数中。