Articles of stack de

¿Los hilos tienen un montón distinto?

Hasta donde sé, cada hilo obtiene una stack distinta cuando el hilo es creado por el sistema operativo. Me pregunto si cada hilo tiene un montón distinto a sí mismo también.

Orden de asignación de variable local en la stack

Eche un vistazo a estas dos funciones: void function1() { int x; int y; int z; int *ret; } void function2() { char buffer1[4]; char buffer2[4]; char buffer3[4]; int *ret; } Si rompo en function1() en gdb , e imprimo las direcciones de las variables, obtengo esto: (gdb) p &x $1 = (int *) 0xbffff380 […]

¿Por qué las stacks normalmente crecen hacia abajo?

Sé que en las architectures con las que estoy familiarizado (x86, 6502, etc.), la stack normalmente crece hacia abajo (es decir, cada elemento insertado en la stack da como resultado un SP decrementado, no uno incrementado). Me pregunto sobre la razón histórica para esto. Sé que en un espacio de dirección unificado, es conveniente comenzar […]

Cuando se asignan vectores, ¿usan memoria en el montón o la stack?

¿Son verdaderas todas las siguientes afirmaciones? vector vect; //allocates vect on stack and each of the Type (using std::allocator) also will be on the stack vector *vect = new vector; //allocates vect on heap and each of the Type will be allocated on stack vector vect; //vect will be on stack and Type* will be […]

¿Se desborda la stack de recursión profunda en Java?

Después de un poco de experiencia con los lenguajes funcionales, estoy empezando a usar la recursión más en Java, pero el lenguaje parece tener una stack de llamadas relativamente poco profunda de aproximadamente 1000. ¿Hay alguna manera de hacer que la stack de llamadas sea más grande? Al igual que puedo hacer funciones que son […]

Diferencia entre char * str = “STRING” y char str = “STRING”?

Mientras codificaba una función simple para eliminar un carácter particular de una cadena, me encontré con este extraño problema: void str_remove_chars( char *str, char to_remove) { if(str && to_remove) { char *ptr = str; char *cur = str; while(*ptr != ‘\0’) { if(*ptr != to_remove) { if(ptr != cur) { cur[0] = ptr[0]; } cur++; […]

Arrays, montón y stack y tipos de valores

int[] myIntegers; myIntegers = new int[100]; En el código anterior, ¿es nuevo int [100] la generación de la matriz en el montón? De lo que he leído en CLR a través de c #, la respuesta es sí. Pero lo que no puedo entender es lo que sucede con las int reales dentro de la […]

Cómo evitar instancias múltiples de una actividad cuando se lanza con diferentes intenciones

Me encontré con un error en mi aplicación cuando se lanzó con el botón “Abrir” en el mercado de Android. Parece que lanzarlo desde el mercado utiliza un propósito diferente y luego lanzarlo desde el menú de aplicaciones del teléfono. Esto está dando lugar a copias múltiples de la misma actividad que se inicia, que […]

¿La stack crece hacia arriba o hacia abajo?

Tengo este fragmento de código en c: int q = 10; int s = 5; int a[3]; printf(“Address of a: %d\n”, (int)a); printf(“Address of a[1]: %d\n”, (int)&a[1]); printf(“Address of a[2]: %d\n”, (int)&a[2]); printf(“Address of q: %d\n”, (int)&q); printf(“Address of s: %d\n”, (int)&s); El resultado es: Address of a: 2293584 Address of a[1]: 2293588 Address of […]

Stack smashing detectado

Estoy ejecutando mi archivo a.out. Después de la ejecución, el progtwig se ejecuta durante un tiempo y luego sale con el mensaje: **** stack smashing detected ***: ./a.out terminated* *======= Backtrace: =========* */lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)Aborted* ¿Cuáles podrían ser las posibles razones para esto y cómo lo rectifico?