-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.man.lodz.pl!newsfeed.pionier.net.p
l!3.eu.feeder.erje.net!feeder.erje.net!newsreader4.netcologne.de!news.netcologn
e.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.ams4!peer.am4.highwi
nds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.ne
ostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Date: Fri, 26 Aug 2022 15:43:13 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101
Thunderbird/91.12.0
Newsgroups: pl.misc.elektronika
Content-Language: pl
From: Atlantis <m...@w...pl>
Subject: C - łańcuchy tekstowe definiowane w parametrach funkcji
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 40
Message-ID: <6308cdf1$0$6193$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 31.0.77.149
X-Trace: 1661521393 unt-rea-a-01.news.neostrada.pl 6193 31.0.77.149:2963
X-Complaints-To: a...@n...neostrada.pl
X-Received-Bytes: 2708
Xref: news-archive.icm.edu.pl pl.misc.elektronika:773941
[ ukryj nagłówki ]Mam pytanie do osób w większym stopniu niż ja ogarniających zachowanie
kompilatorów języka C. Właściwie chcę się upewnić, że moje rozumowanie
jest słuszne.
Pisze obecnie pewną bibliotekę, której głównym elementem będzie maszyna
stanów. Jednym z jej głównych zadań będzie przetwarzanie i przesyłanie
dalej wiadomości wrzucanych do bufora pierścieniowego.
Od strony użytkownika będzie to wyglądało w ten sposób, że w dowolnym
momencie w programie będzie musiał wywołać funkcję, która będzie
wyglądała mniej więcej tak:
send(const char* str);
Wskaźnik str zostanie zapisany w buforze cykliczny, gdzie będzie czekał
do momentu, aż maszyna stanów będzie gotowa go odczytać i przesłać
dalej. W przypadku danych zapisywanych w RAM-ie siłą rzeczy trzeba
będzie więc zadbać, żeby żyły odpowiednio długo i np. nie znikły ze
stosu. Konieczne będzie więc używanie tablic globalnych albo lokalnych
statycznych.
A co w sytuacji, kiedy będę chciał wysłać po prostu wartość podaną
wprost w argumencie funkcji, np.?
send("przykladowy tekst");
Co w takiej sytuacji zrobi kompilator?
1. Zapisze tekst bezpośrednio we flashu i przekaże funkcji wskaźnik na
początek łańcucha zapisanego w pamięci nieulotnej.
2. Przed wywołaniem skopiuje wartość z flasha na stos i przekaże
wskaźnik do miejsca w pamięci RAM - po zwinięciu się stosu zawartość
może zostać nadpisana.
3. Zachowanie nie jest jasno zdefiniowane i zależy od innych czynników.
Oczywiście mówimy o w miarę współczesnym, 32bitowym mikrokontrolerze, z
jedną przestrzenią adresową dla flasha/RAM-u.
Najbardziej logiczna wydaje mi się opcja pierwsza, ale jak mówię - wolę
się upewnić.
Następne wpisy z tego wątku
- 26.08.22 16:40 Dawid Rutkowski
- 26.08.22 20:25 Atlantis
- 26.08.22 21:50 Janusz
- 26.08.22 22:19 Dawid Rutkowski
- 26.08.22 22:34 Grzegorz Niemirowski
- 27.08.22 06:27 JDX
- 27.08.22 06:41 J.F
- 27.08.22 08:10 Atlantis
- 27.08.22 10:28 Dawid Rutkowski
- 27.08.22 11:34 Marek
- 27.08.22 11:53 JDX
- 27.08.22 12:59 Atlantis
- 27.08.22 15:59 Dawid Rutkowski
- 27.08.22 16:06 Dawid Rutkowski
- 27.08.22 16:53 J.F
Najnowsze wątki z tej grupy
- amperomierz w plusie
- 3G-nadal działa
- Historia pewnego miernika kalibratora
- Ustym 4k Pro i wyświetlacz
- Czemu rozwaliło celę?
- Wojna w portfelu
- Jaki trojfazowy licznik tuya lub podobny?
- Problem z dekoderem adresów
- Intel się wyprzedaje: po 10latach pchnęli pakiet kontrolny Altery za 1/4 kwoty zakupu
- Korekcja perspektywy
- Wentylator zabija zasilacze LEDek?
- Re: Kompensacja mocy biernej przy 230VAC
- Totaliztyczny obowiązek naprawy maszyn i urządzeń
- Niby uziom ale nie
- Położyłem dwa telefony obok siebie
Najnowsze wątki
- 2025-04-25 Sprawdzić czy spółka ma sprawy w sądzie
- 2025-04-25 Solarny Palnik Wodorowy
- 2025-04-25 amperomierz w plusie
- 2025-04-25 nie wyłączam silnika
- 2025-04-25 PILNE !! Stara żywność w marketach "Zgodnie z obowiązującym od stycznia 2024 r. prawem przeterminowana, ale nadal zdatna do spożycia żywność, może być sprzedawana przez maksymalnie kolejne 45 dni po dacie na opakowaniu. To legalne tylko wtedy, gdy opakowa
- 2025-04-25 Łódź => Team Lead Data Engineer (Snowflake) <=
- 2025-04-25 Pruszków => Key Account Manager IT <=
- 2025-04-25 Warszawa => Business Development Manager - Network and Network Securit
- 2025-04-25 Kto używa elektrolizera do wytwarzania wodoru do palnika ?
- 2025-04-25 Kraków => PHP Developer (Full Stack) <=
- 2025-04-25 Trójmiasto => Head of Social Media <=
- 2025-04-25 Poznań => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produkc
- 2025-04-25 Warszawa => Developer .Net <=
- 2025-04-25 Warszawa => Support Engineer <=
- 2025-04-25 Warszawa => Team Lead Data Engineer (obszar Snowflake) <=