|
Здравствуйте, уважаемые!
имеем след код:
#include void tst(char* str){ char s[14]="qwert"; int main(void){ дизассемблировал, т.к. на выходе было не то...
E-mail:
info@telesys.ru
printf(str);
}
s[0]='z';
s[1]='x';
s[2]='z';
s[3]='x';
s[4]='=';
tst(s);
tst((char*)s);
tst("abcdefgh");
}
так вот, только последний вызов tst("abcdefgh"); передает указатель на строку (константу).
tst(s); передает указатель на пустое место (4 байта 0x00),
причем &s=&("abcdefgh")-4
s[4]='='; ссылается на адрес &s+4, вроде верно, но память-под s он выделил мне кажется, не там...
этот же пример работает нормально в Keil 7.10 C51, и в EWARM и в BorlandC.
Кто сталкивался и что же делать? Заранее спасибо.
Ответы