idを文字列値"0x01"と比較しようとしていますか、それともchar ASCII 0x01の場合はid値を比較しようとしていますか?
また、どのように解放するかは、どのように割り当てたのかによって異なり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);
}