C++/CGI: Dummer Fehler
-
Ich muss blind sein: wieso stürzt das Programm in der Schleife des Ctors ab?
#include <iostream> using namespace std; class MyCGI { private: string env[22]; public: MyCGI(); ~MyCGI(); }; MyCGI::MyCGI() { char *envName[22] = { "AUTH_TYPE", "CONTENT_LENGTH", "CONTENT_TYPE", "GATEWAY_INTERFACE", "HTTP_ACCEPT", "HTTP_CONNECTION", "HTTP_HOST", "HTTP_REFERER", "HTTP_USER_AGENT", "PATH_INFO", "PATH_TRANSLATET", "QUERY_STRING", "REMOTE_ADDR", "REMOTE_HOST", "REMOTE_IDENT", "REMOTE_USER", "REQUEST_METHOD", "SCRIPT_NAME", "SERVER_NAME", "SERVER_PORT", "SERVER_PROTOCOL", "SERVER_SOFTWARE" }; for(int i = 0; i < sizeof(envName) / sizeof(*envName); i++) { env[i] = getenv(envName[i]); // Bumm!!!!!!!!!!!!!!!!!!!!!!!!!! cout << env[i] << '\n'; } cout << "Env-Beispiel: " << env[3] << '\n'; } MyCGI::~MyCGI() { } int main(int argc, char *argv[]) { cout << "Content-Type: text/html\n\n"; MyCGI CGIInst; return 0; }
-
http://www.cplusplus.com/reference/clibrary/cstdlib/getenv/
Return Value
A null-terminated string with the value of the requested environment variable, or NULL if that environment variable does not exist.Also machst du dann:
char const* p = 0; std::string str(p);Garantiertes undefiniertes Verhalten

Du musst einfach zuerst den Fehlerfall abfangen.
Grüssli
-
Danke das wars!