Wenn ich mit WinInet Daten an ein PHP Script auf meiner HP senden will, dann erwartet WinInet den zu sendenden String als
static TCHAR
Wenn ich den Sinn von "static" nachlese, steht da, die werden nur einmal definiert und behalten ihren Wert bis Programmende.
Nun macht es aber herzlich wenig Sinn, immer die gleichen Daten zu senden, merkwürdigerweise kann ich sogar immer andere Daten senden, und ich verstehe nicht warum.
Ganz offensichtlich kann ich mit std::copy den Inhalt der static Variable ändern und die Sache funktioniert auf den ersten Blick genau wie gewünscht.
Was ich dabei nicht verstehe ist:
1) Wie lange lebt frmdata? Wird bei mehrfachem Aufruf der Funktion jedesmal 1K Speicher belegt, sprich der läuft irgendwann voll, oder wird immer der selbe Speicherbereich verwendet, oder wird frmdata am Ende der Funktion gelöscht?
2) Was passiert, wenn die Funktion 2 mal gleichzeitig mit verschiedenen Daten ausgeführt wird?
Gibt es vielleicht eine elegantere Möglichkeit für das Ganze?
static TCHAR
Wenn ich den Sinn von "static" nachlese, steht da, die werden nur einmal definiert und behalten ihren Wert bis Programmende.
Nun macht es aber herzlich wenig Sinn, immer die gleichen Daten zu senden, merkwürdigerweise kann ich sogar immer andere Daten senden, und ich verstehe nicht warum.
Code:
void connect(std::string tosend)
{
static TCHAR frmdata[1000];
std::copy(tosend.begin(),tosend.end(),frmdata);
frmdata[tosend.length()] = '\0';
// HINTERNET .... usw
return;
}
Ganz offensichtlich kann ich mit std::copy den Inhalt der static Variable ändern und die Sache funktioniert auf den ersten Blick genau wie gewünscht.
Was ich dabei nicht verstehe ist:
1) Wie lange lebt frmdata? Wird bei mehrfachem Aufruf der Funktion jedesmal 1K Speicher belegt, sprich der läuft irgendwann voll, oder wird immer der selbe Speicherbereich verwendet, oder wird frmdata am Ende der Funktion gelöscht?
2) Was passiert, wenn die Funktion 2 mal gleichzeitig mit verschiedenen Daten ausgeführt wird?
Gibt es vielleicht eine elegantere Möglichkeit für das Ganze?