Implementación de hooks de funciones con PolyHook en arquitecturas x86/x64
Fundamentos de la biblioteca
PolyHook se presenta como una solución en C++ diseñada para la interceptación y redirección de llamadas a funciones en entornos x86 y x64. Su arquitectura permite aplicar técnicas de desvío de ejecución, como la inyección de saltos relativos en línea o la sustitución directa de secuencias de instrucciones. Al abstra ...
Publicado el 8-28 00:26
Soluciones algorítmicas: cálculo de distancias, fusión de pociones, agrupación de secuencias y ecuaciones binarias
Sea $A$ la secuecnia original de tamaño $2n$. Definimos $a_x = \{i, j\}$ si y solo si $A_i = A_j = x$ con $i < j$. En particular, $a_0 = \{1, 1\}$.
En otras palabras, $a_i$ representa las posiciones de ambas personas al recoger una piedra de tamaño $i$, con $a_{i,0} < a_{i,1}$.
La respuesta total es simplemente la suma de los desplazamien ...
Publicado el 8-27 06:58
Uso y alcance de const en C++
En C++, la palabra clave const permite definir valores inmutables, controlar modificaciones a través de punteros y restringir comportamientos en funciones miembro. Su posición y contexto alteran significativamente su efecto.
Punteros y const: tres combinaciones clave
La ubicación de const respecto al operador * determina qué parte es inmutable: ...
Publicado el 8-26 22:10
Implementación en C++ del problema P1188 PASTE de la Olimpiada Informática
El problema P1188 PASTE consiste en simular operaciones de cortar y pegar sobre un archivo de texto que contiene inicialmente números naturales del 1 al N, uno por línea. Se deben realizar K operaciones y luego mostrar las primeras 10 líneas del resultado.
Descirpción del problema
Se tiene un archivo con N líneas (N entre 10 y 100.000). Cada lí ...
Publicado el 8-25 10:44
Miembros estáticos, puntero this, memoria dinámica y mecanismo de friend en C++
Miembros estáticos
Los miembros estáticos pertenecen a la clase en lugar de a instancias específicas, permitiendo compartir datos entre todos los objetos de esa clase. Se almacenan en una zona global o estática con un ciclo de vida que abarca toda la ejecución del programa.
Datos estáticos
Declaración y definición
class Contador {
public:
s ...
Publicado el 8-24 16:03
Implementación de Singleflight en C++ para Prevenir la Sobresolicitación
Concepto y Propósito de Singleflight
El patrón Singleflight se utiliza para garantizar que múltiples solicitudes concurrentes para el mismo recurso costoso (como una consulta de base de datos o un cálculo complejo) ejecuten la operación subyacente solo una vez. Las solicitudes posteriores que llegan mientras la primera está en proceso esperan y ...
Publicado el 8-23 22:39
Uso y Manejo del Contenedor std::list en C++
Estrategias de Inicialización de std::list
El contenedor std::list de la STL es una lista doblemente enlazada que permite diversas formas de construcción según las necesidades de memoria y datos iniciales.
1. Constructor por defecto
Crea una lista vacía sin elementos iniciales.
std::list<int> listaVacia;
2. Constructor con tamaño y valor ...
Publicado el 8-21 12:25
Contenedores desordenados en C++: unordered_map y unordered_set
Los contenedores unordered_map y unordered_set forman parte de la biblioteca estándar de C++ desde el estándar C++11. A diferencia de map y set, que utilizan árboles rojinegros y mantienen un orden estricto, estos nuevos contenedores emplean tablas hash como estructura subyacente, permitiendo operaciones promedio en tiempo constante O(1) para i ...
Publicado el 8-20 04:40
Compilación de programas C++ en entornos Linux
Compilación de un único archivo fuente
Considere el siguiente programa C++ almacenado en saludo.cpp:
/* saludo.cpp */
#include <iostream>
int main() {
std::cout << "Hola, mundo" << std::endl;
return 0;
}
Este código utiliza std::cout del encabezado <iostream> para imprimir en la salida estándar. Se com ...
Publicado el 8-19 00:42
Operaciones de Archivos de Audio con la API MMIO en C++
La API de Multimedia de Windows (MMIO) proporciona un conjunto de funciones para interactuar con archivos multimedia, incluyendo archivos de audio. A continuación, se detallan algunas de las funciones clave:
1. mmioOpen
Esta función se utiliza para abrir un archivo multimedia. Permite especificar el nombre del archivo, un puntero a una estructu ...
Publicado el 8-14 21:36