axeljaeger
09-08-2003, 17:55
Ich habe eine Frage zur Funktion memset, die so aussieht:
void *memset(void *s, int c, size_t n);
Die Konstante c wird n mal in den Speicher s geschrieben. c ist ein Integer also vermutlich 32 Bit breit. Folgendes Beispielprogramm zeigt jedoch, das memset nur die ersten 8 Byte kopiert. Was macht denn das für einen Sinn, den Parameter dann als int und nicht als char zu machen? Gibt es eine Funktion, die vielleicht die gesammten 32 Bit kopiert?
#include <cstring>
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
unsigned char data [] = {0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88};
unsigned int pat = 0xFFFFFFFF;
memset(data, pat, 2);
for(int i = 0; i < 8; i++)
cout << "data[" << i << "] = " << (int)data[i] << endl;
// Eigentlich sollten alle Elemente von data FF sein
return 0;
}
void *memset(void *s, int c, size_t n);
Die Konstante c wird n mal in den Speicher s geschrieben. c ist ein Integer also vermutlich 32 Bit breit. Folgendes Beispielprogramm zeigt jedoch, das memset nur die ersten 8 Byte kopiert. Was macht denn das für einen Sinn, den Parameter dann als int und nicht als char zu machen? Gibt es eine Funktion, die vielleicht die gesammten 32 Bit kopiert?
#include <cstring>
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
unsigned char data [] = {0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88};
unsigned int pat = 0xFFFFFFFF;
memset(data, pat, 2);
for(int i = 0; i < 8; i++)
cout << "data[" << i << "] = " << (int)data[i] << endl;
// Eigentlich sollten alle Elemente von data FF sein
return 0;
}