根据对我之前问题的建议,我已经更改了我的代码。现在,我有以下代码:
char* id = someFunction();
if (strcmp(id,"0x01") == 0) {
unsigned char cbuffer[]={0x01, 0x00};
id=reinterpret_cast<char*>(cbuffer);
}
我的问题 - 将 {0x01, 0x00}
传递给 char* 类型的 id 是正确的方法吗?第二个问题是——之后如何释放 id 指针?
最佳答案
您是要将 id 与字符串值“0x01”进行比较,还是要比较 id 值(如果它是 char ASCII 0x01)?
另外,你如何释放它取决于你如何分配 someFunction()
返回的 char*
?这段代码是纯 C 还是 C++?如果 someFunction()
使用 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);
}
关于c++ - 将系统符号传递给 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12858529/