Today I learnt that I always misinterpreted the working of memset( ) in C++.
I generally use memset( ) to set integer arrays as either 0 or infinity (some very large integer), but sometimes I need to set it to other values as well.
Consider an array :
My understanding was that calling
However, this is not how memset( ) works.
memset( ) writes byte-wise on the memory.
Calling memset(a,127,sizeof(a)) sets every byte, in every integer, as 127.
So, the actual value that will be assigned to each integer in the array a[ ] would be a much larger integer value.
From cplusplus.com :
I generally use memset( ) to set integer arrays as either 0 or infinity (some very large integer), but sometimes I need to set it to other values as well.
Consider an array :
int a[100];
My understanding was that calling
memset(a,127,sizeof(a));
would set all elements in the array as 127.However, this is not how memset( ) works.
memset( ) writes byte-wise on the memory.
Calling memset(a,127,sizeof(a)) sets every byte, in every integer, as 127.
So, the actual value that will be assigned to each integer in the array a[ ] would be a much larger integer value.
From cplusplus.com :
void * memset ( void * ptr, int value, size_t num );
Sets the first num bytes of the block of memory pointed by ptr to the specified value (interpreted as an unsigned char).