elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15
81  Programación / Programación C/C++ / Re: (Ayuda) Programa crashea al analizar una cadena (char *) en: 26 Mayo 2015, 23:22 pm
El compilador es el que viene con el ID de VisualStudio 2013.

Me sigue dando el error con la solución propuesta  :-(

Gracias por comentar
82  Programación / Programación C/C++ / (Ayuda) Programa crashea al analizar una cadena (char *) en: 26 Mayo 2015, 22:49 pm
Hola. Muy buenas a tod@s. El problema que tengo es algo extraño. Primero enseño el código:

Código
  1. void String::replaceData(const char *data) {
  2. _num_characters = 0;
  3.  
  4. while(data[_num_characters] != (char)NULL)
  5. _num_characters += 1;
  6.  
  7. realloc(_value, _num_characters + 1);
  8. _value[_num_characters] = (char)0;
  9.  
  10. while(true) {
  11. --_num_characters;
  12.  
  13. _value[_num_characters] = data[_num_characters];
  14.  
  15. if(_num_characters == NULL)
  16. break;
  17. }
  18. }

Main

Código
  1. #include <iostream>
  2.  
  3. #include "string.h"
  4.  
  5. int main(int argc, char *argv[]) {
  6. String cadena = "Hola";
  7.  
  8. cadena.replaceData("Hola, soy un programador");
  9.  
  10. std::cin.get();
  11. return 0;
  12. }

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 :P Gracias
83  Programación / Programación C/C++ / Re: (Pregunta) Que pasa con la memoria asignada al cerrar el programa en: 26 Mayo 2015, 03:13 am
Estupendo!
84  Programación / Programación C/C++ / Re: (Pregunta) Que pasa con la memoria asignada al cerrar el programa en: 26 Mayo 2015, 03:01 am
Vale. Gracias :P

Solo para aclarar. Entonces, no tengo que hacer nada de gestión de memoria al cerrar el programa?
85  Programación / Programación C/C++ / Re: (Pregunta) Que pasa con la memoria asignada al cerrar el programa en: 26 Mayo 2015, 02:50 am
Lo preguntaba para enfocarme en la asignación dinámica con malloc (y en c++ con new). A lo mejor por ser dinámica, por alguna razón, necesitan ser eliminadas. No se muy bien como va :P

La duda viene originada de que a medida de que va pasando el tiempo, parece que mi memoria RAM se va llenando (ej.: empiezo al 19% y ya voy por el 21%). Esto pasa siempre.
86  Programación / Programación C/C++ / (Pregunta) Que pasa con la memoria asignada al cerrar el programa en: 26 Mayo 2015, 02:40 am
Hola a todos. Hoy tengo una duda/curiosidad que quería resolver.

La duda es la siguiente: ¿Las variables (arrays, clases...) de desasignan al cerrar el programa? También las variables previamente asignadas con malloc se desasignan al cerrar el programa, o necesitas eliminarlas tu mismo?

Gracias
87  Programación / Programación C/C++ / Re: (Ayuda) Error con un bucle while en un constructor en: 25 Mayo 2015, 18:17 pm
... Por eso algunas veces me siento tonto. Claro xD Gracias!

Para el que le interese, aquí le dejo el código con el error solucionado :D

Código
  1. String::String(const char *init_value) {
  2. unsigned int num_characters = 0;
  3.  
  4. while(init_value[num_characters] != (char)NULL)
  5. num_characters += 1;
  6.  
  7. _num_characters = num_characters;
  8. _value = (char *)malloc(num_characters + 1);
  9. _value[num_characters] = (char)0;
  10.  
  11. while(true) {
  12. --num_characters;
  13.  
  14. _value[num_characters] = init_value[num_characters];
  15.  
  16. if(num_characters == 0)
  17. break;
  18. }
  19. }
88  Programación / Programación C/C++ / (Ayuda) Error con un bucle while en un constructor en: 25 Mayo 2015, 17:34 pm
Hola. Muy buenas a todos. Hoy traigo una duda de las que uno piensa que el compilador está fallando porque no tiene otra explicación.

Primero voy a introducir: Estoy intentando imitar la clase string a modo de ejercicio. Pues bien, en el constructor está pasado algo solo descriptible a través de la salida (está debajo del código).

Código
  1. String::String(const char *init_value) {
  2. unsigned int num_characters = 0;
  3.  
  4. while(init_value[num_characters] != (char)NULL)
  5. num_characters += 1;
  6.  
  7. _num_characters = num_characters;
  8. _value = (char *)malloc(num_characters + 1);
  9.  
  10. _value[num_characters] = (char)0;
  11.  
  12. while(--num_characters >= 0) {
  13. printf("%d ", num_characters);  // _value[num_characters] = init_value[num_characters];
  14. }
  15. }

Pues bien, la salida es la siguiente:
3 2 1 0 -1 -2 -3 -4 //... y así hasta el infinito
(El comentario no está en la salida, solo es para aclarar)

Como ven, aunque num_characters valga menos de 0, el while se sigue repitiendo...

Espero que sea error del compilador, porque si no yo sería muy tonto

89  Programación / Programación C/C++ / Re: Ayuda con estructuras de C en: 25 Mayo 2015, 01:20 am
Para ayudarte, necesitamos al menos las declaraciones de las funciones usadas en este código para así identificar el error
90  Programación / Programación C/C++ / Re: Duda para ejercicio en C (principiante) en: 19 Mayo 2015, 21:59 pm
Con break sería:

Código
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4. int valor = 0;
  5.  
  6. printf("Introduza un valor entre 0 y 100: ");
  7. scanf_s("%d", &valor);
  8. fflush(stdin);
  9.  
  10. if(valor > 100) {
  11. printf("Has introducido un número mayor a 100! El programa va a cerrarse");
  12. getchar();
  13. return -1;
  14. }
  15.  
  16. int contador;
  17. for(contador = 0; contador <= 100; contador++) {
  18. if(valor < contador)
  19. break;
  20. else
  21. printf("A");
  22. }
  23.  
  24. getchar();
  25. return 0;
  26. }
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines