[Buổi 22][Củng cố bộ nhớ & chuỗi][Lab] Bài 1: Memory Bug Clinic
Memory Bug Clinic
Bối cảnh
Một starter program cần đọc n từ vào mảng động string, in theo thứ tự ngược rồi cleanup.
Trong bài học, lỗi thường gặp là delete sai cặp hoặc dùng sau release. Lời giải chuẩn thể hiện lifecycle đúng.
Yêu cầu
- Cấp phát
string* a = new string[n]. - Đọc n token.
- In ngược.
- delete[] a rồi đặt nullptr.
Input
Dòng 1 n; dòng 2 n token.
Output
Một dòng token theo thứ tự ngược.
Ràng buộc
0 ≤ n ≤ 3000; token không có whitespace.
Ví dụ 1
Input
5
a b c d e
Output
e d c b a
Giải thích
Mảng động gồm năm chuỗi a b c d e. Sau khi sửa lỗi memory, thao tác đảo tại chỗ đổi cặp đầu-cuối và tiến dần vào giữa, tạo e d c b a. Vùng nhớ chỉ được delete[] sau khi hoàn tất xử lý và output, nên không có use-after-free.
Ví dụ 2
Input
0
Output
Giải thích
Khi n=0, chương trình không có chuỗi để đảo và không được truy cập phần tử đầu tiên. Output rỗng là đúng. Case này kiểm tra code đã xử lý đúng lifecycle thay vì cấp phát/truy cập vô điều kiện.
Thông tin học tập
- Module: M06
- Buổi: B22
- Loại bài: LAB
- Độ khó: Medium
- Concepts: dynamic string arrays, new[], delete[], lifetime, cleanup
- Giới hạn kiến thức: B01-B22
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments