[Erledigt]System.AccessViolationException
-
Hi,
es ist mir ja schon fast peinlich, aber ich bekomme es nicht ordentlich hin, ein char Array um eine Stelle zu verlängern und ein '\n' ranzuhängen.
char *parameter_full = new char[strlen(parameter)+1]; sprintf(parameter_full,"%s\n",parameter); ... delete parameter_full;Nach ein paar Ausführungen bekomme ich eine System.AccessViolationException...
Was stimmt damit nicht?
-
Du berücksichtigst das Terminierungszeichen nicht:
char *parameter_full = new char[strlen(parameter)+1+1];// +1 für \n +1 für \0
-
Oh, noch ein Fehler! Du hast ein Memory-Leak in deinem Code:
delete parameter_full;Wenn du
new[]benutzt, dann musst du auchdelete[]verwenden:delete[] parameter_full;
-
Verdammt, das hätte ich doch alles wissen müssen....so, Schluss für heute.
Danke dir!
-
In C (Ausnahme:
new[]unddelete[]):const char *parameter = "Test"; char *parameter_full = new char[strlen(parameter) + 2]; memcpy(parameter_full, parameter, strlen(parameter) + 1); strcat(parameter_full, "\n"); printf("%s", parameter_full); delete[] parameter_full;In C++:
const std::string parameter = "Test"; std::string parameter_full = parameter + "\n"; std::cout << parameter_full << std::endl;Fazit: Wenn du schon in C++ programmierst, dann nutze auch das, was die Sprache schon bietet!
-
klöklökl schrieb:
Fazit: Wenn du schon in C++ programmierst, dann nutze auch das, was die Sprache schon bietet!
Das die Leute immer die verwendung der STL mit der Hochsprache C++ verwechseln,.... nenene
-
zeusosc schrieb:
klöklökl schrieb:
Fazit: Wenn du schon in C++ programmierst, dann nutze auch das, was die Sprache schon bietet!
Das die Leute immer die verwendung der STL mit der Hochsprache C++ verwechseln,.... nenene
Dass die Leute immer die STL mit der C++-Standardbibliothek verwechseln... nenene :p