だから、ここにこの質問を説明する私の例があります
void * p1;
int * p2, * p3;
p2 = new int;
p1 = p2;
p3 = (int *) p1;
メモリを解放するには、次の3行は互いに同等ですか?
delete p2;
delete p3;
delete (int *) p1;
私がそのようなものを使用している理由は、その型を知らずに関数間でポインターを渡したいからです。たとえば、void ポインターを定義し、次のように他の関数を呼び出してその値を変更します。
void * p1;
func1(p1); //in this function, p2 = new int and p1 is assigned as p1 = p2;
func2(p1); //in this function, p1 is assigned to another pointer: int * p3 = (int *)p1;
次に、 func3 を呼び出してメモリを解放しました
func3(p1); //delete int * p1
func3 を呼び出した後、もう func1 で p2 を処理する必要がありますか?
ありがとう!