Giả sử bạn đang sử dụng _tcscpy_s
và không _tcscpy
, tham số thứ hai nên có kích thước thực tế của mảng, và không phải là chiều dài của hiện đang chứa chuỗi. Ví dụ:
TCHAR dest[20];
_tcscpy_s(dest, _countof(dest), _T("Hello"));
Bạn thậm chí có thể sử dụng phiên bản 2 tham số đó sẽ không yêu cầu các thông số kích thước:
_tcscpy_s(dest, _T("Hello"));
Nếu tchar_pointer
thực sự là một con trỏ và không phải là một mảng (như ngụ ý của tên gọi của nó) bạn cần phải rất cẩn thận khi xác định dung lượng thực tế của nó là gì. Thêm bối cảnh sẽ là cần thiết để đề xuất phương pháp tiếp cận đúng, nhưng việc sử dụng độ dài của chuỗi chứa để tính kích thước của bộ đệm gần như chắc chắn là cách tiếp cận sai.
Đề xuất trên 2 sẽ không hoạt động, vì con trỏ tchar đang đến từ bên ngoài và bên của tôi không biết bộ đệm được con trỏ trỏ đến bao nhiêu. –
Sau đó, bạn không thể sử dụng các hàm '_s' an toàn, bởi vì toàn bộ điểm của chúng là bạn cung cấp kích thước bộ đệm. –