tôi nhận được vấn đề với các loại mã sau đây:Sử dụng một con trỏ sau khi giải phóng nó sử dụng miễn phí()
int* myPointer1 = malloc(50 * sizeof(int));
int* myPointer2 = malloc(50 * sizeof(int));
free(myPointer1);
myPointer1 = myPointer2;
myPointer1[0] = 3;
Tôi nhận được một lỗi phân khúc. Có chuyện gì vậy?
bạn đã kiểm tra để đảm bảo rằng các hoạt động malloc đã thành công? bạn có thể gán myPointer1 cho NULL nếu không. – djhaskin987
Nơi nào bạn segfault? Tại 'free (myPointer1)' hoặc trên 'myPointer1 [0] = 3'? – Seth
Nếu 'malloc' thành công thì không nên có segfault. Tất cả những gì bạn đang làm là giải phóng bộ nhớ tại vị trí bộ nhớ gốc của 'myPointer1', sau đó gán lại' myPointer1' với vị trí 'myPointer2'. Lưu ý, tuy nhiên, nếu bạn định giải phóng bộ nhớ cuối cùng, bạn sẽ chỉ muốn giải phóng một trong các con trỏ (tức là 'myPointer1' OR' myPointer2') vì chúng trỏ đến cùng một địa chỉ. – RageD