#menios eis a linha.
cpu_state_t é uma estrutura de dados que armazena o estado atual do processador.
cpu_state_p é um ponteiro para cpu_state_t, e um alias para cpu_state_t*.
Quando se usa malloc (ou kmalloc, que faz a mesma coisa), você precisa informar a quantidade de bytes que está solicitando para armazenar seus dados. Se vou armazenar uma estrutura do tipo cpu_state_t, preciso passar como parâmetro sizeof(cpu_state_t), que retorna o tamanho da estrutura.
Se eu peço o tamanho de cpu_state_p, receberei oito bytes de memória, que é o tamanho de um ponteiro numa arquitetura de 64bits, mas vou gravar uns 80 bytes no lugar, sobrescrevendo as estruturas seguintes, corrompendo a lista ligada que estou usando para ligar os nós de memória e cagando a porra toda.
C é simples, mas não é fácil.
Embed Notice
HTML Code
Corresponding Notice
- Embed this notice
P Balduino (p_balduino@bolha.us)'s status on Thursday, 24-Oct-2024 05:46:04 JSTP Balduino