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

Khác biệt giữa string và char[] trong C++


Phần này sẽ xem khác biệt giữa string và char[] trong C++. char[] về cơ bản là mảng ký tự. Có một số thuộc tính của mảng này:

  • Nếu char[] cấp phát trên stack, nó luôn chiếm 256 byte, không phụ thuộc vào kích thước văn bản.

  • Nếu dùng malloc() hoặc calloc() cấp phát động trên heap, ta chịu trách nhiệm giải phóng bộ nhớ sau khi dùng, và luôn có chi phí cấp phát heap.

  • Nếu kích thước mảng ký tự lớn hơn 256 ký tự, chương trình có thể crash, tạo thông báo assertion xấu.

  • Để lấy độ dài chuỗi, phải quét toàn bộ mảng cho đến khi gặp ký tự '\0' mỗi lần.

Ngược lại, C++ có string trong namespace std. Đây là một lớp, chứa mảng ký tự bên trong. Nó tự động quản lý cho người dùng. Trong hầu hết trường hợp, mảng built-in cho string là 16 ký tự. Vì vậy, với chuỗi ngắn, nó không phân mảnh bộ nhớ, nhưng chuỗi lớn nó dùng heap.

C++ string có sẵn ký tự '\0'. Nó lưu độ dài chuỗi mà không cần đếm. Vì chuỗi ngắn không dùng heap, nó bảo vệ khỏi tràn bộ nhớ đệm. Hơn nữa, string dễ dùng hơn trong C++.