Как работает такое приведение типов?
От: Sash_net  
Дата: 22.07.10 11:45
Оценка:
Здраствуйте,

Попадаются в коде такие конструкции:
void fnc(void)
{
    int *r;
    //...
    
    if()
        *r = (int)r1; // r1 type: char
    else 
        *r = (int)r2; // r2 type: short
    //...
    
    printf("%d", *r);
}


Обьясните пожалуста как это работает и работает ли вообще в плане выделения памяти/времени жизни/области видимости (когда выделяется память для результата преобразования, выделяется ли вообще, когда освобождается, может ли программа падать изза этого)?

Спасибо.

ПС: фикшу чужий код, расчитанный на компилируется под разные версии юникса/линукса, после портирования под новую (64-разрядную) версию с применением нового компилятора перлы типа приведения char* в int приводят к сегментейшн фолдам, хотя раньше вроде работало (но возможно дебаг-режим где есть такие преобразования никто раньше нормально не тестировал), есть и более замысловатые конструкции типа той что выше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.