Hola. Muy buenas a tod@s. El problema que tengo es algo extraño. Primero enseño el código:
void String::replaceData(const char *data) {
_num_characters = 0;
while(data[_num_characters] != (char)NULL)
_num_characters += 1;
realloc(_value, _num_characters + 1);
_value[_num_characters] = (char)0;
while(true) {
--_num_characters;
_value[_num_characters] = data[_num_characters];
if(_num_characters == NULL)
break;
}
}
Main
#include <iostream>
#include "string.h"
int main(int argc, char *argv[]) {
String cadena = "Hola";
cadena.replaceData("Hola, soy un programador");
std::cin.get();
return 0;
}
El problema está en la línea 4, donde el while. Cuando la cadena que le paso por parámetros tiene mas de 16 caracteres, y en el programa presiono enter (el cin.get deja continuar el programa), me sale el siguiente error:
'Debug Assertion Failed, file f:\dd\vctools\crt\crtw32\misc\dbgheap.c, line 1322, expression: _CrtlsValidHeapPointer(pUserData)'
Sé que el error se produce en el while ya que quitandolo, y sustituyendo la variable _num_characters por 17 no me da ese error.
Espero que me puedan ayudar
Gracias