memset() in C++
Overview
The memset() in C++ is used to assign a specific value to the contiguous memory blocks. It is useful for filling number of bytes with a given value starting from a specific memory location. The memset() function is defined in <cstring> header file.
Syntax
The syntax of memset() in C++ is:
Parameters of memset() in C++
The memset() in c++ takes the following three parameters.
- obj: Pointer to the initial memory from where we want to add values, it can be a string name or pointer to string, array name or pointer to array, vector iterator, etc.
- val: The value to be copied or added.
- num: Number of bytes to be filled.
Transform Your Career
Choose from our industry-leading programs designed for career success
Modern Software and AI Engineering Program
Master full-stack development with AI integration
+1000 moreModern Data Science and ML with specialisation in AI
Advanced data science techniques with AI specialization
+1000 moreAdvanced AIML with Specialisation in Agentic AI
Deep dive into AIML with focus on Agentic systems
+1000 moreDevOps, Cloud & AI Platform Engineering
Build and manage AI-powered cloud infrastructure
+1000 moreAI Engineering Advanced Certification by IIT-Roorkee
Premier AI engineering certification from IIT-Roorkee
Return Values of memset() in C++
Return Type: The memset() in C++ returns obj, the pointer to the given object.
Scaler Placement Report and Statistics
Scaler learners achieved 2.5x salary growth with average post-Scaler CTC reaching ₹23L.
Example
Lets take a sample string as Str: C++ Sample Code
Output
The sample string Str initially has abcde at all indices. But after the memset() function, it has f at all indices.
Exceptions
The behavior of memset() in C++ is not similar in all the cases. It is undefined in the following cases:
- When num is greater than the size of the object, it will have undefined behavior.
- When the object is of array, vector, struct, etc, and value to be filled is other than 0 or -1, then it will show undefined behavior.
Turn Learning into Career Growth
What is memset() in C++?
The memset() in C++ takes three arguments: obj, val, and num. The character represented by val is first converted to unsigned char and then copied into the first num bytes of the object pointed by the obj pointer.
The memset() in C++ for int array will copy the given value at all the indices of the array and same for the vector. The behavior of memset() function for char array is explained in first example.
More Examples
Example 1:
Lets take a vector vec:
C++ Sample Code
Output
Explanation:
- The memset() in C++ can be used for vectors as mentioned above. Vector vec is initialized with 5.
- Using memset(&vec[2], 0, sizeof(vec[2]) * (vec.size()-3)); in this the starting address passed is &vec[2]; i.e., address of 2nd index. The value to be filled is 0, and number of bytes passed is sizeof(vec[2]) * (vec.size()-3), that is (size of one block) *(6 - 3). It will fill value 0 till 3 blocks starting from index 2.
Example 2:
As we have seen this in detail in above section, memset function on an array can be used only to fill values as 0 or -1; otherwise, it will not work for an array. Let's see with the following demonstration.
Output:
Explanation: We can see from the above case that the array can be initialized using memset() with 0 and -1 only.
Conclusion
- The memset() in C++ is used to assign a specific value to the contiguous memory blocks.
- When number of bytes to be filled is greater than the size of the object, memset() in C++ will have undefined behavior.
- When the object is of array, struct, etc. and value to be filled is other than 0 or -1, then memset() in C++ will show undefined behavior.
- Memset() in C++ for integral data types(array, vector, etc.), only two values, 0 and -1, are allowed.
- In memset() in C++, if the object is of string type, any character can be copied to all the indices.