Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Có an toàn khi delete con trỏ void trong C/C++?

Con trỏ void (void*) không gắn liền kiểu dữ liệu. Không an toàn khi delete void* vì delete cần gọi destructor của đối tượng, nhưng không biết kiểu để hủy đúng.

Ví dụ con trỏ void

#include <stdlib.h>
int main() {
    int a = 7;
    float b = 7.6;
    void *p;
    p = &a;
    printf("Int: %d\n", *(int*)p);
    p = &b;
    printf("Float: %f", *(float*)p);
    return 0;
}

Kết quả

Int: 7
Float: 7.600000

Lưu ý: Luôn ép kiểu về kiểu gốc trước khi delete, hoặc dùng con trỏ kiểu đúng.