Título: [Ayuda] Error con delete[]... algo extraño... Publicado por: BlackZeroX en 7 Julio 2011, 23:33 pm .
Intento Re-Crear el Redim Preserve de VB6 todo bien pero Cuando deseo volver a redimencionar Crashea alguien sabe por que? Código
Dulces Lunas!¡ Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: Ferno en 7 Julio 2011, 23:50 pm Código
Será porque en el momento en que _szt_new sea menor a _szt_now (lo cual sucede en alguna instrucción del main), estarías pidiendo una memoria menor a la necesaria para realizar el memcpy? EDIT: Ahora que veo decís que crashea en el delete[], no pensé en eso. Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: BlackZeroX en 8 Julio 2011, 00:30 am .
Edito ya esta corregido: Código
Dulces Lunas!¡. Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: Ferno en 8 Julio 2011, 00:40 am No, no me entendiste. Yo digo en el caso (es el tercer caso en tu main) en el que _szt_now (11) es mayor a _szt_new (10), por ende, en:
Código
estás pidiendo determinada cantidad de memoria. Pero en: Código
estás copiando aún más memoria que la que pediste para __new_ptr. Fijate que borrando el tercer caso, el programa funciona perfecto. Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: d(-_-)b en 8 Julio 2011, 00:42 am Es la leche, ¿porque hay que escribir codigo tan feo? :xD
Hablando en serio, es incomodo leer codigos asi ¬¬ saludos... :xD Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: BlackZeroX en 8 Julio 2011, 01:21 am @Ferno.
Claro que te entend, de hecho por eso meti estos if Muchas gracias. Código
por otro lado: @Slow V.S. para joderte la vida, para eso hay que escribirlo asi. P.D.: Tengo mi propia nomeclatura para los prefijos que me hacen leer mis codigos facilmente. Dulces Lunas!¡. Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: d(-_-)b en 8 Julio 2011, 06:14 am Citar @Slow V.S. para joderte la vida, para eso hay que escribirlo asi. Tu crees ? Excelente (http://u2.uni.edu.ni/UserFiles/Image/MrBurns.gif) Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: Karman en 12 Julio 2011, 22:59 pm Tu crees ? Excelente (http://u2.uni.edu.ni/UserFiles/Image/MrBurns.gif) Juaz! me causó gracia :P S2 Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: Valkyr en 13 Julio 2011, 00:53 am La verdad que es un poco tediosa la nomenclatura, pero bueno, cada cual que programe a su gusto, eso sí, no me gustaría tener que continuar un código que tu empezaste xD y lo digo sin mala intención y sin ánimo de burla.
Saludos. Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: BlackZeroX en 13 Julio 2011, 23:45 pm En que sentido es tediosa? me gustaria saber.
Dulces Lunas!¡. Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: Khronos14 en 14 Julio 2011, 00:02 am ¿Como ves mejor tu código?
Así: Código
O de esta manera: Código
Programar es un arte, y para un programador es un deber escribir buen código y que sea legible por otros. Saludos. Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: d(-_-)b en 14 Julio 2011, 00:33 am Se nota la diferencia. :P
saludos... Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: BlackZeroX en 14 Julio 2011, 00:47 am No me gusta declarar variables sin tener prefijos que NO me indiquen que tipo de variables son... es decir me guio en la nomeclatura hungara que de hecho estan hay por algo, es decir, mantenimiento de codigo a corto, media y largo plazo.
Digamoslo de esta manera: Tienes 40 declaraciones de variables en un proceso X y varias lineas en tu proceso, si les pongo solo nombres sin que digan mucho ( tipo y/o clase ), y se lo doy a otro programador, este ultimo para que modificara solo 3 lineas, el pobre tendria que irse hasta donde estan declaradas las varibales para saber de que tipo son, y tambien para saber si se estan tratando variables tipo <Puntero>, <Puntero a Puntero> o en un caso mas raro saber si son <Punteros a Punteros a Puntero>, seria algo muy tedioso esto la vdd. temp, Current, etc y si se desea hacer un cast entre tipos distintos, pues tendria el programador que estar transladandose a zonas que no tendria que transladarse a cada instante. __pp_ <.. Puntero a puntero algunos solo hacen un pNombreVariable... yo le pongo los "_" solo para separar esta nomeclatura ( aun que estoy pensando solo realizar esto para los punteros de cualquier tipo... ) _tipo_nombre otros -> tipoNombre ( Como dije estoy pensando en quitar los _ y dejarselo solo a los punteros... ) un ejemplo de lo que digo: Código
y tu codigo: Código
Ahora dime de que tipo son cada variable... solo lo sabrias si analizas el codigo pero eso conlleva tiempo... en mi caso si sabes que significan cada prefijo sabes que tipo son sin mayor problema. otro ejemplo seria detectar errores entre comparaciones de Enteros con signo y enteros sin signo y asi detectar con tan solo ver las variables donde radica el error. Ej: Código
si no tuviera prefijos... Código
Los codigo de los sitemas Operativos y/o programas variados tienen nomeclaturas similares y no manejan en muchos casos el tipo de declaraciones que aqui Todos han mencionado (Con excepciones claro). seguramente cada empresa de software maneja y/o define una nomeclatura "X" aun que otras pueden usar la nomeclatura recomendada y que mas se usa. Como has dicho Programar es un arte y debe ser de facil interpretacion sea cual sea el caso... Nota: A mi nomeclatura solo le he agregado "_" para separar nombre de tipos, y no morir en el intento, aun que no es la misma nomeclatura que se usa en las estructuras y demas debido a los "_" se comprende. Dulces Lunas!¡. Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: Khronos14 en 14 Julio 2011, 00:58 am Vale, en lo de los tipos de datos tienes razón. De hecho para proyectos grandes, yo también lo hago. En el código que puse tienes 5 variables: newSize, currentSize, buff, currentBuff y temp. Creo que leyendo las variables sabes de que tipo son, excepto temp, el resto no tienen problemas.
A lo que nos referimos con tu código es al uso de __ para nombrar una variable, el uso de tabulaciones para pasar los parámetros a una función, a juntar los operadores con las variables (no lo soporto xD), etc.. Saludos. Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: BlackZeroX en 14 Julio 2011, 01:10 am A lo que nos referimos con tu código es al uso de __ para nombrar una variable, el uso de tabulaciones para pasar los parámetros a una función, a juntar los operadores con las variables (no lo soporto xD), etc.. Si bueno los _ como ya dije los usare para punteros de esa manera no los mesclare con el prefijo que designa al tipo, esto si no lo cmabiare, lo de las tabulaciones loq ue yaho yo es tener una linea imaginaria que me permita ordenar las asignaciones y no me genere personalmente peresa visual. Código
lo que hago es ordenarlo de esta manera Código
lo hago solo por la peresa viisual que me genera al ver tanto codigo juntado, lo del memcpy fue un error... ya que lo en C lo hago de esta manera. Código
Pero como estoy haciendo pruebas y aun no comento nada lo dejo lineal para saber donde le faltan comentarios ( Muy breves pero explicitos ). P.D.: Al final deje esta funcion de largo y use realloc() y malloc() para esto, dejando a new y delete para las clases. Dulces Lunas!¡. Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: rir3760 en 14 Julio 2011, 02:51 am Comentarios subjetivos sobre la notación húngara se pueden encontrar muchos, por ejemplo en la pagina de Charles Petzold. No solo eso, en libros considerados "argumentos de autoridad" hay lineamientos que abren la puerta a todo tipo de discusiones.
Por ejemplo en la biblia de C++ (el libro "The C++ Programing Language") BS recomienda, entre otras cosas, el uso de fuentes proporcionales (y para alinear el texto eso implica el uso de tabuladores en lugar de espacios). Sin tratar de echarle mas leña al fuego a la discusión en el sentido de "¿cual es mejor?" un documento interesante es: Making Wrong Code Look Wrong by Joel Spolsky (http://www.joelonsoftware.com/articles/Wrong.html). Hay que tomarlo de forma objetiva, mente abierta y cada quien sacara sus propias conclusiones. ---- Un cuestionamiento objetivo en contra del uso de nombres como "__pp_back" es el siguiente. 1) Al utilizar nombres de encabezados terminados con ".h" como "<stdio.h>" el nombre de espacios utilizado es el global. 2) En C (y eso incluye las facilidades de su biblioteca estándar) los nombres con un guion bajo inicial están reservados. Si bien el riesgo de un conflicto de nombres es bajo seria mejor evitarlo ya sea utilizando los nombres "políticamente correctos" como "<cstdio>" o bien evitando los nombres en la forma ya mencionada. ---- En cuanto al programa de BlackZeroX este se puede mejorar, esto por varias razones. La primera es que la variable "__pp_back" solo se utiliza para almacenar el valor de "__pp_vector" sin que ninguna de ellas sea modificada, por ello esa variable se puede eliminar. De forma similar a free se puede utilizar delete, no es necesario verificar si se pasa un puntero nulo ya que el comportamiento esta garantizado (no pasa nada). Eso nos lleva a eliminar la ultima sentencia condicional. A la variable "__new_ptr" se le da un valor inicial de NULL, eso nos lleva a eliminar (por superflua) la rama (y asignación) en: Código
Por ultimo un detalle que debo admitir si es subjetivo: al utilizar 0 en lugar de NULL evitamos incluir <cstdio>. Con esos cambios (mas la nomenclatura al gusto) quedaría así: Código
Un saludo Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: Karman en 14 Julio 2011, 04:04 am pero siguiendo tu lógica de programación el siguiente código:
Código
es más entendible de la forma: (size_t == unsigned integer) Código
aunque preferiría el modo: Código
S2 PD: Ni vi el código... solo la nomenclatura, de todas formas el código de rir3760 parece estar bien (y suele estarlo dado que le gustan este tipo de algoritmos :P) Título: Re: [Ayuda] Error con delete[]... algo extraño... Publicado por: BlackZeroX en 14 Julio 2011, 07:10 am Por ejemplo en la biblia de C++ (el libro "The C++ Programing Language") BS recomienda, entre otras cosas, el uso de fuentes proporcionales (y para alinear el texto eso implica el uso de tabuladores en lugar de espacios). Un cuestionamiento objetivo en contra del uso de nombres como "__pp_back" es el siguiente. 1) Al utilizar nombres de encabezados terminados con ".h" como "<stdio.h>" el nombre de espacios utilizado es el global. 2) En C (y eso incluye las facilidades de su biblioteca estándar) los nombres con un guion bajo inicial están reservados. Si bien el riesgo de un conflicto de nombres es bajo seria mejor evitarlo ya sea utilizando los nombres "políticamente correctos" como "<cstdio>" o bien evitando los nombres en la forma ya mencionada. * Uso tabulador, no espacios... * Ok no usare "_" para declarar variables al menos que lo requiera... ( mi idea no era "__Nombre" donde "__" indicara que son punteros mas bien "_pp_TipoNombre"... _pp_szNombres ). * Lo de la segunda variable y lo que presedia, ya me habia dado cuanta, pero solo me interesaba ese error, que ya esta solucionado aun asi te lo agradezco. * Me quedo con la nomeclatura de 1 sola letra para indicar los prefijos de la variable( inclusive combinaciones como las que ha hecho Karman me gusto el prefijo "v" para tipos que puedan tomar distintos tipos de variable, inclusive me soluciono un ideal que tenia respecto a las combinaciones de los mismos ). * NULL = (void*)0... * Con estos dos ultimos Post muy completos me han quitado la sensacion de abrir un 2do Hilo de discucion. P.D.: El tema ya se desvirtuo mucho, aun que ya aprendi una cosa mas!¡. Dulces Lunas!¡. |