我将一个指向char数组的指针传递给我的方法,以及一个char数组实际高度的值.我循环查看所有值是否为0,如果它们返回0,否则返回1.
该方法用作测试,以查看我是否应该释放内存,并将指针设置为null(如果它为0).我所遇到的问题是,程序最终应该有“一些不自在”的记忆,所以我不知道它是否正确地进行 – 而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; }
解决方法
当你说“…所有的值都是零…”时,我假设你的二进制值为零,而不是字符’0’…
if(*charPointer != '0'){
这是字符零(0x31)而不是空字符(0x00).如果您尝试检查零字节,请尝试以下操作:
if (*charPointer != '\0') {
此外,您不会递增或抵消您的字符指针charPointer,因此您始终测试第一个字符.
if (*charPointer++ != '\0) {
…要么…
if (*(charPointer + i) != '\0) {