01/10/2018, 16:04
Hàm memset thực sự làm gì?
Cho mình hỏi hàm memset thực sự làm gì? Mình có đoạn code sau:
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int *p=new int;
memset(p,1,sizeof(int));
cout<<*p<<endl;
}
Và nó in ra 16843009. Mình nghĩ kết quả phải là biểu diễn của dãy nhị phân 32 bit 1 -> 2^(32)-1
Bài liên quan
Đơn vị cơ bản là byte mà dòng này không ra được 0xFFFFFFFF đâu.
memset nhận 3 tham số.
Tham số thứ 1 là địa chỉ bắt đầu.
Tham số thứ 2 là giá trị mà sẽ set cho một byte.
Tham số thứ 3 là số byte liên tiếp được set tính từ địa chỉ (tham số đầu tiên).
Như ví dụ trên nó set 4 byte của một số int, mỗi byte có giá trị bằng 1. => giá trị sau khi hàm memset chạy là 0x01010101.