C 测试看看我是否应该释放内存
我将一个指向char数组的指针传递给我的方法,以及char数组的实际高度值。我循环查看是否所有值都是0,如果是,则返回0,否则返回1 该方法被用作测试,以查看是否应该释放内存,如果满0,则将指针设置为null。我遇到的问题是,程序在最后应该有“一些不自由”的内存,所以我不知道它是否正确地执行了它——而gdb我非常挣扎 谢谢你的阅读C 测试看看我是否应该释放内存,c,pointers,C,Pointers,我将一个指向char数组的指针传递给我的方法,以及char数组的实际高度值。我循环查看是否所有值都是0,如果是,则返回0,否则返回1 该方法被用作测试,以查看是否应该释放内存,如果满0,则将指针设置为null。我遇到的问题是,程序在最后应该有“一些不自由”的内存,所以我不知道它是否正确地执行了它——而gdb我非常挣扎 谢谢你的阅读 int shouldBeNull(char *charPointer, int sizeOfCharArray) { int isIn = 0; in
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;
}
int-shouldBeNull(char*charPointer,int-sizeofcharray)
{
int-isIn=0;
int i=0;
而(i
当您说“…所有值都是零…”时,您不是在增加字符指针,我假设您指的是零的二进制值,而不是字符“0”
if(*charPointer != '0'){
这是零位字符(ASCII 0x31),而不是NUL字符(ASCII 0x00)。如果尝试检查零字节,请尝试以下操作:
if (*charPointer != '\0') {
此外,您没有递增或偏移字符指针charPointer
,因此您总是测试第一个字符
if (*charPointer++ != '\0) {
……或者
if (*(charPointer + i) != '\0) {
- 如果不是所有值都为0,则不会返回1
- 您可以从条件中返回1,而不是设置
并中断循环isIn
if(*charPointer)
或者if(*charPointer!=0)
那么如果我正在检查charchter 0,那么我的方法是正确的?另外,我正在递增结尾处的指针?@sbsp:是的,您的代码正确地检查了零位字符,但可能的例外是它没有考虑终止的空字符(0x00)在字符串的末尾-假设缓冲区指向以null结尾的字符串…@sbsp:您的原始版本没有显示这一点。现在,编辑的版本正确地显示了这一点。