你想ID比較字符串值「0×01」或者是你想如果是比較值的ID char ASCII 0x01?
此外,你如何釋放它取決於你如何分配char*
返回someFunction()
?這個代碼是純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沒有'reinterpret_cast'重標記爲C++。另外,你永遠不會調用'malloc()'或'new',所以你不需要明確地釋放任何東西。 –
你應該更好地解釋你真正想要完成的事情。 – sth
除非'someFunction()'分配內存,否則它返回一個指向(這將是不好的編碼習慣),你的'id'指向一些函數本地內存,一旦函數返回就不再有效。 – DevSolar