您是在尝试将 id 与字符串值“0x01”进行比较,还是在尝试比较 id 值(如果它是 char ASCII 0x01)?
另外,你如何释放它取决于你如何分配char*
返回的someFunction()
?这段代码是纯 C 还是 C++?如果someFunction()
分配 using new char[2]
,那么您必须使用delete[]
. 如果你使用 C 风格分配malloc(sizeof(char)*2)
,那么你必须做一个free(id)
.
还请考虑,在您这样做之前strdup
,如上一篇文章中所建议的,您必须释放原始 ID。这当然是假设,如果按照设计,返回的指针someFunction()
不指向某个不应该被释放的全局常量。
char* id = someFunction();
if (strcmp(id,"0x01") == 0) { // no idea if this line make sense at all.
free(id); // or delete[] id; if id is allocated using new char[];
static char[] cbuffer = {0x01, 0x00};
id = (char*) malloc(sizeof(char)*2);
strcpy(id, cbuffer);
}