测试看我是否应该释放记忆

时间:2010-03-24 18:23:36

标签: c pointers

我正在向我的方法传递一个指向char数组的指针,以及char数组实际高度的值。我循环查看是否所有值都是0,如果它们返回0,否则返回1.

该方法用作测试,看看我是否应该释放内存,如果指针满0,则将指针设置为null。我遇到的问题是程序最终应该有“一些不自由”的记忆,所以我不知道它是否正确地做了 - 而gdb我非常努力。

感谢您阅读

int shouldBeNull(char *charPointer, int sizeOfCharArray)
{
    int isIn = 0;
    int i = 0;

    while(i < sizeOfCharArray){
        if(*charPointer != '0'){
            isIn = 1;
            break;
        }
        i++;
        charPointer++;
    }   
    return isIn;     
}

3 个答案:

答案 0 :(得分:5)

当你说“...所有值都为零......”时,我假设你的二进制值为零,而不是字符'0'......

if(*charPointer != '0'){

这是字符零(0x31)而不是空字符(0x00)。如果您尝试检查零字节,请尝试以下操作:

if (*charPointer != '\0') {

另外,你没有递增或偏移字符指针charPointer,所以你总是测试第一个字符。

if (*charPointer++ != '\0) {

...或...

if (*(charPointer + i) != '\0) {

答案 1 :(得分:4)

您没有增加charPointer

答案 2 :(得分:1)

  • 如果不是所有值都是0
  • ,则不返回1
  • 您可以从条件中返回1,而不是设置isIn并退出循环