C# Y EL STACK OVERFLOW

Filed Under (General) by PoliMalo on 28-12-2005

A los que llevamos ya algunos años trabajando en el mundillo del desarrollo de aplicaciones, términos como heap o stack nos son familiares.

Ahora que están de moda lenguajes de alto nivel como el C# o ActionScript, estos términos suenan difusos, como algo del pasado… y nada más lejos de la realidad.

Los que seáis de mi quinta (rondando la treintena) y tengáis los huevos pelaos de programar, seguro que habéis picado lineas de C y C++ por un tubo. Y como bien sabemos, el stack o pila es un tema que según en que entornos hay que tratar con delicadeza, sobre todo cuando echamos mano de la recursividad.

La recursividad en una poderosa técnica de programación que para los no iniciados, consiste en que una función se llame a si misma. Claros ejemplo de recursividad son el cálculo de un factorial, la serie de Fibonacci o el algoritmo de relleno FloodFill.

Que una función se llame a si misma conlleva un peligro y es que esta se quede llamándose a si misma más de lo esperado, provocando el temido Stack Overflow. En muchos casos, esto es debido a un mal diseño del algoritmo. Pero otras veces no…. necesitamos más memoria para la pila.

Si estamos programando en C o C++, esto no es excesivo problema, ya que en los settings de compilación y linkado podemos especificar memoria "extra" para la pila sin problemas.

El problema está, como en mi caso, si estamos utilizando C#.
¡¡¡No se puede cambiar el tamaño de la pila!!!

En concreto, tanto con el Runtime.NET 1.1 como el 2.0, el stack reservado para una aplicación es de algo menos de 512K's… una miseria. Un simple algoritmo de floodfill que tuviera que rellenar un área de 512×512 daría sistematicamente un StackOverflow a medio rellenar.

Aquí tenéis un simple fragmento de código en C#:


using System;
using System.Collections.Generic;
using System.Text;

// compilar con: /unsafe

namespace Recurse
{
class Program
{

static unsafe void Main(string[] args)
{
char* fib = stackalloc char[256*256*16];
}
}
}

Este simple programa realiza una reserva de 1024K's en la pila. Si compilamos y ejecutamos nos dará un StackOverflow.

Después de mucho buscar e investigar, para solucionar el problema tenemos esta solución:

Además del compilador de C#, necesitaremos el Visual C++ 7.0(.net) o superior (desconozco si esto sirve para la versión Express)
Con el Visual C viene una utilidad llamada editbin.exe. Una vez creado nuestro ejecutable (que da error), con esta aplicación le podremos cambiar el tamaño de la pila de la siguiente manera. Desde una consola tecleamos lo siguiente:

editbin /stack:4000000 Programa.exe

Con esta simple linea habremos puesto a disposición de nuestro programa casi 40Mb de Stack, con lo que podremos solucionar el problema.

A mi me ha salvado la vida…. pero no hubiera sido más fácil que microsoft hubiera puesto más settings en sus nuevos compiladores…. se ve que no.



Comparte este artículo:
  • Meneame
  • BarraPunto
  • Google
  • del.icio.us
  • Bumpzee
  • Facebook
  • Digg
  • StumbleUpon
  • Wikio

GEEK REGALOS NAVIDEÑOS

Filed Under (General) by PoliMalo on 26-12-2005

En estos días en que el espiritu navideño lo invade todo con un afán de consumismo, los regalos están a la orden del día.

Si no sabeis que regalar a alguien que sea un tanto geek y le guste o esté enganchado al sudoku, esto le vendrá como anillo al dedo:

La autentica y genuina Sudoku Machine portable, que curiosamente fué uno de los regalos de casa.



Comparte este artículo:
  • Meneame
  • BarraPunto
  • Google
  • del.icio.us
  • Bumpzee
  • Facebook
  • Digg
  • StumbleUpon
  • Wikio

CAIDA LIBRE SUPERSÓNICA

Filed Under (General) by PoliMalo on 20-12-2005

Hace ya algún tiempo, en una conversación en el trabajo, comenté que una vez había habido una persona que, haciendo caida libre, había conseguido superar la velocidad del sonido… Me dijeron que eso era imposible, y yo me quedé como un poco…. intranquilo.

Ahora, pasado el tiempo, he conseguido una prueba fehaciente de lo que dije:

el personaje en cuestión fué Joe Kittinger. Una caida libre desde 30.000 metros, con una punta de 1150km/h en 17 minutos. Y aquí el video que relata su proeza.

Comparte este artículo:
  • Meneame
  • BarraPunto
  • Google
  • del.icio.us
  • Bumpzee
  • Facebook
  • Digg
  • StumbleUpon
  • Wikio

¡¡ANUNCIA POLIMALO.COM EN TU WEB!!

Filed Under (General) by PoliMalo on 19-12-2005

¡Joder como se enrolla la peña!

Aprovechando la campaña navideña en que las grandes corporaciones hacen anuncios nuevos y se publicitan, WWW.POLIMALO.COM también se apunta a esta ola.

Gracias a que un montón de crápulas me usurpan mis queridos megas de tráfico del servidor linkandome imagenes directamente, he aprovechado para darles el cambiazo y a ver si así hacen algo por la causa.

Si les molaba tanto la imagen de Cálico, se la podían haber copiado, no?

Estos son los afortunados que poseen un "banner polimalo", que anuncia MalaLeche.

www.grupoespal.net
spaces.msn.com/members/luisky987
spaces.msn.com/members/valchu
spaces.msn.com/members/spacesmsncommember10
spaces.msn.com/members/McAly
psponly.blog.ijijiji.com
spaces.msn.com/members/magoz29
spaces.msn.com/members/valchu
spaces.msn.com/members/alvarobernalgarcia
spaces.msn.com/members/magoz29
spaces.msn.com/members/tres-cantos
spaces.msn.com/members/Ailentx
spaces.msn.com/members/bassmaster87
spaces.msn.com/members/ViVaLaSfLaMenCaS
spaces.msn.com/members/McAly
freddy7.iespana.es
spaces.msn.com/members/luisky987
spaces.msn.com/members/hiphopmolina

Comparte este artículo:
  • Meneame
  • BarraPunto
  • Google
  • del.icio.us
  • Bumpzee
  • Facebook
  • Digg
  • StumbleUpon
  • Wikio

AMSTRAD RETURNS

Filed Under (General) by PoliMalo on 19-12-2005

Mientras hacía la compra he visto no sin sorpresa algo que hacía años no veía… ¡¡¡ UN AMSTRAD !!!.
Casi me salta la lagrimilla al recordar mi betusto CPC-464. En la imagen lo podemos ver corrriendo el HyperSports…. chicos viajes le metía al pobre joystick.

El caso es que no es un ordenador lo que he visto. En los últimos años, y después de la ecatombe que sufrió a finales de los 80 la que se prometía la prospera empresa de Alan Sugar, pensaba que había desaparecido. Pués no es así. Volviendo a sus origines, es una empresa de electrodomesticos.

Y aquí la prueba palpable. Un DVD-Mpeg4 Amstrad.

Comparte este artículo:
  • Meneame
  • BarraPunto
  • Google
  • del.icio.us
  • Bumpzee
  • Facebook
  • Digg
  • StumbleUpon
  • Wikio
Páginas: 1 2 3 Siguiente

Rss & Stats


Suscríbete al Poli-RSS
My Micro Stats