Mnka
14-08-2004, 10:34
Ecco la funzione membro di una classe che mi sta facendo impazzire:
class ordina{
...
char *str, *str1;
...
ordina(){str = str1 = 0;};
}
void ordina::init(){
//ordina_elem vale 100000
if (!str) {
str = new char ((ordina_elem + 1) * sizeof(char));
}
strcpy (str, "");
int x = 0;
while (x != ((ordina_elem / 1000) -1)){
//str 1000 è una stringa di 1000 caratteri
strcat (str, str1000);
x++;
}}
in pratica deve allocare memoria per 100000 caratteri e poi scriverci sopra 99 volte una stringa da 1000 caratteri.
La funzione che richiama il tutto è:
int f(){
int errori = 0;
ordina prova;
prova.init();
return errori;
}
Non è un problema di compilazione.
La cosa strana è che se io chiamo f la prima volta va tutto ok, ma la seconda mi da errore windows:muro: :confused:
Ogni consiglio è ben accetto, compreso un diverso approccio al problema;)
class ordina{
...
char *str, *str1;
...
ordina(){str = str1 = 0;};
}
void ordina::init(){
//ordina_elem vale 100000
if (!str) {
str = new char ((ordina_elem + 1) * sizeof(char));
}
strcpy (str, "");
int x = 0;
while (x != ((ordina_elem / 1000) -1)){
//str 1000 è una stringa di 1000 caratteri
strcat (str, str1000);
x++;
}}
in pratica deve allocare memoria per 100000 caratteri e poi scriverci sopra 99 volte una stringa da 1000 caratteri.
La funzione che richiama il tutto è:
int f(){
int errori = 0;
ordina prova;
prova.init();
return errori;
}
Non è un problema di compilazione.
La cosa strana è che se io chiamo f la prima volta va tutto ok, ma la seconda mi da errore windows:muro: :confused:
Ogni consiglio è ben accetto, compreso un diverso approccio al problema;)