Nie znam się na c++ (przeskoczyłem z c do c#), ale: istnieje do kompletu z malloc i free funkcja realloc - pozwalająca na zmianę wielkości zaallokowanej pamięci, jeżeli nie potrafi rozszerzyć bloku, to allokuje nowy i kopiuje do niego zawartość starego, po czym zwalnia stary. Z new bodajże nie da się...
Witam, ponownie mam problem z dynamiczną alokacją pamięci i pobieraniem danych od użytkownika. Działanie programu powinno wyglądać tak: 1. Użytkownik wpisuje na przykład 1 2 3; 4 5 6 ;7 8 9; 2. program dynamicznie alokuje w pamięci tablicę 3x3 o zawartości 1 2 3 4 5 6 7 8 9 Dodatkowe...
hmmm, a mnie tu pokazuje, że nawet nie ściągnąłeś tego, co wrzuciłem, a tam jest napisane jak to zrobić. Napiszę jeszcze raz (osatni :D ): 1. robisz malloca - rozmiar pamięci o 1 większy niż cały plik, tablica przypisana do wskaźnika na char, czyli deklaracja: char *plik; 2. ładujesz do tego obszaru...
a mi się zdaje ze delete aaa; usunie tylko pierwszy obiekt tablicy żeby usunąc cała tablice trzeba użyć delete aaaa W tym przypadku - jeżeli new utworzyło całą to i delete usunie całą (stworzyliśmy jeden obiekt zawierający kilka elementów a nie kilka pojedynczych). Jeśli idzie o konstrukcje...
Optymalizacja problemu jest zazwyczaj mocno uzależniona od algorytmu całościowego. Kiedyś zastanawiałem się też nad tym problemem. STL przy małych buforach robi tak jak jest to w Twoim przypadku. Przy wiekszych sprawach niż typowy string stosuje technikę, w której "rezerwuje" dużą przestrzeń bajtową...
struktura moja wygląda tak i koniec: struct KrawedzGrafu{ int odwezla; int dowezla; int waga; }; Nie mogę jej zmieniać. Za dużo roboty by zmieniać całe ponad 100 linijek programu. To coś jest nie tak z programem. Struktury są między innymi po to, żeby można było...
Dla LM3 i LM4F vtable musi być w SRAM. Jest używana przez niektóre funkcje biblioteczne ROM_xxx do dynamicznej zmiany adresów przerwań.
Czyli jeżeli dobrze rozumiem, powinienem zrezygnować z tego pseudo-obiektowego podejścia na rzecz czegoś, bo kurde nie specjalnie wiem jak do tego się zabrać, na myśl przychodzi mi jeszcze coś na zasadzie stosu. Nie słuchaj maruderów - jak potrzebujesz dynamicznie i masz odpowiednio dużo RAMu to...
W języku C tablice są alokowane w ciągłym obszarze pamięci. Możesz tablicę zainicjalizować w jednym wywołaniu. [syntax=c]*tab = (int **) calloc(SIZE_X*SIZE_Y, sizeof(int));[/syntax]
Bardzo proszę ponownie o pomoc bo znowu mam problemy z prawidłowym przekazywaniem zmiennych i obiektów funkcjom poza C. Otóż w programie main chcę zdefiniować tablicę w której jeszcze nie wiem ile będzie stringów (słów), wiem tylko że będzie takowa tablica. I potem ją chcę przekazać do funkcji poza...
Nie wiem, za co odpowiedzialne są poszczególne parametry funkcji (poza len, addr się domyślam). Wiem też jak zmapować pamięć na plik. Zadaniem jest napisanie funkcji void *allocate(int size) (oczywiście w asm).
Używając alokacji dynamicznej i tak musisz używać wskaźników na struktury.
Witam, otóż stworzyłem klasę w której konstruktorze dynamicznie alokuję pamięć dla tablicy dwuwymiarowej, problem w tym, że program się wysypuje, gdy próbuję pobrać konkretny element za pomocą metody get, w dynamicznym alokowaniu pamięci nie widzę błędu, więc może źle przekazuje argumenty, wkleję kod: [syntax=c] #include<iostream&g...
Oczywiście, przyznaję swój błąd. Sprawdziłem to co napisałeś w debugerze i owszem są komórki pamięci nietknięte przez operator delete. Człowiek uczy się całe życie...
Chcę móc dynamicznie alokować pamięć, której rozmiar jest z góry znany, a nie ograniczony stosem. A mółbyś tę myśl rozwinąć? Czy stos ma wielkosć nieznaną bo nie rozumiem.
;*************************************... otwarcie pliku ;********************************... ah, 3dh ; usluga otwierania pliku mov al, 2 ; otwieram do odczytu i zapisu mov cx, 1 mov dx, offset File name ; DS:DX offset do nazwy pliku int 21h jc...
Robiłem coś podobnego :) Przerób sobie co do sortowania po długości słowa to albo licz znaki w elemencie tablicy do napotkania \0 lub sizeof() i podziel przez rozmiar chara to otrzymasz ilość znaków w słowie z tablicy a później quick sortem i gotowe, dynamiczna alokacja pamięci jest czyli zależnie...
Witam. Mam wykonać polecenie: 'Stworzyć strukturę zawierającą dynamicznie zaalokowaną tablicę dwuwymiarową i jej wymiary. Tablica dwuwymiarowa jest reprezentowana przez odpowiedni wskaźnik.' Oprócz tego jeszcze zwolnić zaalokowaną pamięć. Oto co napisałem.. byłbym wdzięczny gdyby ktoś sprawdził czy...
witam, MAm przygotować aplikację z danej tematyki: 1. Podstawowe elementy języka – zmienne i ich typy, operatory, instrukcje sterujące, pętle, funkcje, tablice. 2. Tworzenie typów złożonych –struktury, unie, tablice struktur, wyliczenia. 3. Przetwarzanie strumieniowe – operacje...
Coś naplątałeś... Aby uzywać malloca bez dziwnych errorów, musisz zadeklarować odpowiednią ilość miejsca na stertę . Co z tego, ze twoje zmienne zajmują niewiele ramu, skoro najpewniej ustawiles sobie parę kB sterty, i gdy przekroczysz te pare kB, program ci sie natychmiast wykrzaczy, bo oczywiście...
Po dwu latach doświadczenia w programowaniu w C/C++ wracam, żeby ostatecznie rozwiązać mój problem. Może odpowiem najpierw na pierwsze pytanie Problem polega na tym, że chcę wykorzystać zewnętrzną funkcję pobierającą wskaźnik, która alokuje mi pamięć, tak żebym mógł korzystać z niej w funkcji main....
Zapisanie do pliku oraz wczytanie z linii poleceń zrób sam ;-) Żeby nie było, że dostajesz gotowca... #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; //przeklejone sortowanie ze strony //http://www.java2s.com/Code...
Tak jak napisałem, jeżeli tylko rozbijasz tekst w buforze na np. wyrazy, to prawdopodobnie sama tablica wskaźników Ci wystarczy. Ale to jednoznacznie z Twojej pierwszej wypowiedzi nie wynikało. Jeżeli wczytujesz ciąg znaków z wejścia, to najpierw musisz zaalokować bufor (tablicę), gdzie ten ciąg wczytasz....
Akurat sposób działa doskonale, nie testowałem tego z ARM , ale z AVR (myślę, że procesor nie ma tu nic do rzeczy). Zresztą opisałem go z działającymi przykładami w swojej książce. Ale po kolei. Linker nie stanowi problemu - on ma za zadanie uzupełnić adresy wywołań funkcji bibliotecznych w aplikacji....
A to nie jest tak, że z piku zczytujesz do strumienia potem do string stream i do piero możesz zrobić konwersje do typu całkowitego . Wiadomo alokujesz przez new dynamicznie wiec dopiero w programie wyskakuje błąd. :) Nie zagłebiałem sie w kod.
Witajcie. Zacząłem jakieś 2 miesiące temu przygodę z ARMami na przykładzie STM32. Moim celem jest przygotowanie samochodowego odtwarzacza mp3 zastępującego zmieniarkę CD. Początek zabawy przeszedł dość gładko i po paru dniach już odtwarzałem muzykę z pendrive'a. Jednak odbywało się to w pętli, więc...
wystarczy poprawić funkcje free/malloc/alloc/realloc tak, aby zmieniały wartość zmiennej globalnej określającej wielkość wolnego obszaru sterty Myślę, że nie do końca. Każdy algorytm dynamicznej alokacji pamięci nie polegający na wykorzystaniu MMU będzie generował narzut na przestrzeni dostępnej...
Witajcie moi drodzy Chciałbym zaprezentować tutaj drugą wersję mojego Arduino VGA Shield (nakładki na Arduino UNO generującej jednokolorowy obraz VGA i czarno-biały PAL/NTSC ) - tym razem wykonaną za pomocą elementów SMD , i z dodatkowymi układami na pokładzie ( expander portów...
Nie ma takiej zależności. Jeśli nie korzystasz z dynamicznej alokacji pamięci to możesz to bardzo zgrubnie oszacować po ilości zmiennych automatycznych (lokalnych), a szczególnie tablic. To co czyni takie oszacowanie szczególnie trudnym to określenie stopnia zagnieżdżenia funkcji - bo to zajmuje sporo...
W takim razie pozostaje dynamiczna alokacja pamięci czyli opcja b. Język C++ oferuje operatory new i delete, natomiast w języku C pozostaje calloc, malloc, free i realloc.
Hmm napiszę może o co mi dokładnie chodzi. Mam kod (połączenie dwóch języków C oraz MicroPythona). Zamysł autora był taki, żeby cały SRAM(tj 112K+16K) przeznaczyć na bufor obrazu, a CCM RAM(tj. 64K) na całą resztę. No i funkcje, które są w tym kodzie dość mocno używają dynamicznej alokacji pamięci, tyle...
A Twój post co dokładnie wnosi do dyskusji? Gdzie pamięć jest alokowana statycznie? W Twoich projektach, jak mniemam? Miło że napisałeś wcześniej na forum o tym że trzeba być świadomym takiego problemu! To że sobie można przerobić to na alokację statyczną to każdy wie, tylko już nie każdy wie, że dla...
Problem z alokacją pamięci - alokujesz w funkcji "wypelnianie", wypełniasz, wyświetlasz po czym kasujesz, wracasz do main i znów chcesz wyświetlić. Proponuję zrobić alokację pamięci oraz zwalnianie w samej funkcji main. Poza tym masz błąd przy zwalnianiu pamięci - zgubiłeś [] przy "delete wsk;"
Kilka stert się przydaje w przypadku gdy wykorzystywane są jednocześnie: - duże bloki pamięci na konfiguracje, fifo/lifo raczej stałej lecz dynamicznej wielkości o elementach z stałym size; rzadko są malloc-owane i free-owane - średnie bloki pamięci na bufory tymczasowe; średnio często alokowane i...
Jeżeli mówiąc "po staremu" masz na myśli statyczne alokowanie, to jest spora różnica. To jest alokowanie statyczne, czyli po wyjściu z zakresu funkcji obiekt jest automatycznie usuwany: [syntax=cpp] void f() { Obiekt a; } [/syntax] Lecz jeżeli masz funkcję która ma przetworzyć nieokreśloną...
A z jakim błędem? Spróbuj może ładować plik na samym końcu. Choć zasadniczo to tu błędów nie widać :| A nie masz w innym miejscu jakiś metod pracujących dynamicznie na obiektach? (zwlanianie pamięci, alokacja pamięci, tworzenie nowych obiektów, usuwanie istniejących) Aha - nie nadpisujesz przypadkiem...
Witam, chce stworzyć programik do mnożenia macierzy. Wersja ze sztywno podanymi tabelami dziala. Jednak postanowilem dodać bajer, który będzie tworzył macierze o określonym rozmiarze i wczytywał je do programu. W sieci znalazłem kilka tematów o dynamicznej alokacji pamięci dla tablicy dwuwymiarowej....
O wskaźnikach kolega słyszał? Jak najbardziej słyszał i używał jednakże w tym przypadku wg. mnie wskaźnik będzie miał identyczne zastosowanie jak tablice. Potrzebny podwójny wskaźnik, który mógłby być zwracany z jakiejś funkcji, jednakże należy zauważyć, że wartości tablic są stałe, więc tworzenie...
Witam. Mam problem z prostym programem w ktorym kolko poruszalo by sie od gory do dolu po tablicy. Granice sa oznaczone przez znak '*'. Kolko zaczyna ruch z dolnego lewego rogu po natrafieniu na gorna granice powinno zmienic kolumna na o jedna w prawo i potem jechac w dol etc. Niestety kolko zmienia...
Po pierwsze proponowałbym w strukturze już nie używać wskaźników tylko od razu tablic typu char o zadanej długości, bo alokacja pamięci dla każdego elementu struktury jest uciążliwa i może prowadzić do błędów. Poza tym w przypadku kopiowania ciągów znaków należy użyć funkcji strcpy() zdefiniowanej w...
Bardzo sensowne, pod warunkiem, że zagwarantujesz, że nikt inny w tym czasie na pewno nie będzie potrzebował tej pamięci - bo inaczej masz błąd. Tak mam błąd. Zaloguje sobe, że coś takiego sie stało. Mogę z tym żyć, nie jest to krytyczny element systemu. Nie używam dynamicznej alokacji do podejmowania...
Zauważ, że tutaj: int ile_znakow = 0; unsigned char *cT1 = new unsigned char [ile_znakow]; unsigned char *cT2 = new unsigned char [ile_znakow]; alokujesz puste tablce! ile_znakow = z1 - pocz; // wyznacza długość i 1 tablicy cT1 // tutaj przypisuje odpowiednie fragmenty...
Witam! mam Takie zadanie."Napisz funkcję dokonującą zamian miejscami elementów o indeksach parzystych z elementami o indeksach nieparzystych(przykładowo:element 0 z 1, 1 z 2 , 2 z 3 , 4 z 5 itd) UWAGA Tablica powinna byc tworzona dynamicznie i nei moze byc deklarowana jako zmienna tylko jaka Wskaźnik."...
Język C nie wspiera dynamicznych tablic wielowymiarowych. Masz dwie możliwości: 1- wykorzystać "tablicę tablic" czyli tablicę wskaźników; 2- użyć tablicy jednowymiarowej i liczyć indeksy "na piechotę". Twój przykład jest zbliżony do metody pierwszej, tzn. tabpix jest u Ciebie wskaźnikiem na wskaźnik,...
(at)BlueDraco O jakim łańcuszku wywołań piszesz? Przecież wskaźnik wskazuje na obiekt, z jego VMT, która jest tworzona na etapie kompilacji. Jeśli masz wskaźnik na obiekt typu np. Primary, który ma VM, pokryte w obiekcie Secondary i wywołasz (Primary*)ptr->VM to wywoła się VM z Secondary, bo jej...
Zmieniać nie można, ale mógłbym obiekt klasy sterującej inicjalizować rozmiarem pobranym z serwera? Owszem, ale wtedy taka inicjalizacja polegałaby na dynamicznej alokacji pamięci w zależności od parametru, który nie jest jeszcze określony w momencie kompilacji programu :)
To rozumiem to tak że zmienna "i" jest już na stałe w pamięci i zadanie tej funkcji jest wykonywane najszybciej jak to możliwe Tak zmienna ma swoje stale miejsce w pamięci. Nie koniecznie wykonanie jest najszybsze bo najszybciej to działa jak zmienna jest w rejestrze procesora a globalną trzeba zapisać...
int *x_temp=new int[ilosc]; Dlaczego trzeba czekać aż 2 minuty na alokację tego???Zmierzyłem czas w trybie debugowania.ilosc wynosi 100. Przykładowo ten kod char **tab=new char*[ilosc2]; //gdzie ilosc2=2147 for(i=0;i<ilosc;2i++... tab[i]=new char[100];...
I "dobrze"... Przecież w każdej z funkcji f_x, ja byk jest delete . Przy alokacji następnej tablicy po prostu otrzymujesz ten sam obszar pamięci, w którym są jeszcze śmieci po tab1. Czemu to wszystko w tej postaci ma służyć? Kod jest zresztą niepełny, bo skąd się niby tab0 bierze? Pozdrawiam, GSM
Cześć, Została to wspomniana moja biblioteka do obsługi systemu plików ext2/3/4. Napisałem ta bibliotekę do własnych celów w zeszłym roku. Duża jej część bazuje na implementacji systemu operacyjnego HelenOS. Jednak trzeba było się trochę nagimnastykować aby odpalić ją na mikrokontrolerze ;). Biblioteka...
Albo można - dla ćwiczenia - pobawić się strzelaniem z armaty do wróbla i zająć się dynamiczną alokacją pamięci. W takim wypadku stworzysz listę struktur. Na pierwszy element takiej listy musisz posiadać w pamięci wskaźnik. Zamiast tworzyć zmienną "pozycja" tworzysz strukturę "pozycja" a w niej...
Funkcja printf jest bardzo wygodna, mozna więc napisać swoją, z ograniczoną funkcjonalnością - w takim wypadku zajmuje może kilkaset bajtów (a nie 10k). Nawet sobie taką stworzyłem, obsługuje tylko %s, %d i %x - zupełnie wystarcza dla typowych zastosowań. Co do dynamicznej alokacji pamięci, to wszyscy...
Cze, Od jakiegoś czasu rozwijam swoją konstrukcję sterownika do stacji pogodowej. Projekt robi się coraz większy i większy i w końcu dotarłem do etapu, w ktorym rozważam użycie jakiegoś RTOSa. Mam dużą bibliotekę własnego kodu obejmującą takie rzeczy jak kompleksowa obsługa komunikacji po USART czy...
Niniejszy temat zakładam "dla potomnych" ponieważ przeszedłem w/w procedurę z SUKCESEM i przywróciłem do życia dysk SSD SP S55 120GB SATA III. Chciałbym zachęcić do dyskusji i wymiany wiedzy (jeżeli są inne metody umieśćmy je tutaj). Na początek - jakich dysków dotyczy ten problem? - Goodram CX100,...
Witam, mam kilka pytań o pewne dolegliwości/ nieścisłości w moim rozumuwaniu dotyczących przede wszystkim używania sterty w RTOSach oraz unii i struktur. Pytanie nr.1 Kiedy najlepiej używać dynamicznej alokacji pamięci ze sterty, a kiedy statycznej deklaracji w danym zadaniu, jaka jest różnica pomiędzy...
Funkcje te są w nagłówku <avr/pgmspace.h>: Te, które mają sufiks _PF obsługują wskaźniki 24 i 32 bitowe do FLASH. Pozostałe funkcje - np. sprintf_P i inne z IO.h z _P obsługują __memx ale tylko w obrębie pierwszych 64 kB - nie ma potrzeby, aby obsługiwały >64 kB, gdyż linker zawsze umieszcza...
Można je utworzyć na stercie wykorzystując dynamiczną alokację pamięci, co jednak dla małych zmiennych nie jest ekonomiczne. W praktyce interpreter musiałby mieć własnego menagera pamięci, realizującego właśnie coś na kształt sterty, tyle, że dostosowanej do potrzeb interpretera. Z drugiej strony avr-gcc...
Co do lock i unlock, to proponuję raczej sekcję krytyczną, chyba że alokujesz dynamicznie pamięci z kontekstu przerwania (to wtedy musi być blokada przerwań) lub nigdy nie wykorzystujesz selektywnego "zawieszania" tasków (wtedy może być suspend-all). Suspend all jest wywoływany w wewnętrznych funkcjach...
Bawię sie STM32F103ZET + zewnętrzny RAM i nie bardzo potrafię wyczarować działającą konfigurację tak, aby stos był w pamięci wewnętrznej, natomiast sterta w pamięci zewnętrznej i jednocześnie uzyskać działającą funkcję malloc na tejże stercie w pamięci zewnętrznej. O ile pomijajac malloc cel osiągnąłem,...
To raczej temat na inną rozmowę, nie odpowiada to zbytnio na pytanie autora. Autor zadał kilka pytań, na które postaram się odpowiedzieć i dodać trochę informacji od siebie. MS dostarcza Visual C++, to nie jest czysty C++ Każdy kompilator (preprocesor również) dostarcza swoje dodatkowe rozwiązania/ułatwienia....
Z tym restartem w DOSie to tak miało być :) Windows się zamyka i całą władzę oddaje DOSowi a po zakończeniu programu ładuje się od nowa. Jak masz ochotę poeksperymentować to: W pliku .pif: W zakładce Pamięć - wszystkie na Auto i dodatkowo: Pamięć konwencjonalna - Chroniona XMS - Używa HMA W...
Alternatywnie możesz skorzystać z dynamicznej alokacji pamięci. Sprawdzi się szczególnie w przypadku dużych tablic. Deklarujesz najpierw typ type tZmienna = array [min...max] of jakis_inny_typ; następnie zmienną wskaźnikową rzutowaną na ten typ var zmienna = ^tZmienna; W inicjalizacji...
Jawne określenie rozmiaru stosu (stosów) zajmuje jakieś 3 sekundy, a dzięki temu zyskujesz świadomość jego rozmiaru i tego że kiedyś może się skończyć. Rozwiązanie typu "stos na końcu zajmuje sobie tyle miejsca ile jest" to taka wycieczka w ciemnościach. Przecież program skompiluje się bezproblemowo...
Mieszasz różne sprawy. To czy dany układ ma MMU czy go nie ma jest bez znaczenia dla klasy takiej jak std::string. Ona po prostu wewnętrznie zarządza pamięcią którą sobie sama wewnętrznie zaalokowała dynamicznie. MMU jest zupełnie zbędne z punktu widzenia C++ (czy jakiegokolwiek innego "kompilowalnego"...
Oczywiście, masz rację. Jak będzie globalna ewentualnie zdefiniowana przez funkcję nadżędną - to tak jak mówiłeś, do funkcji przez wskaźnik. Rozwiązanie dosyć eleganckie, można taką tablicę wykorzystać w roli np.: bufora także do innych funkcji. Jak będzie statyczna - (oczywiście również masz...
Wówczas takie programowanie przestaje się znacząco różnić od zwykłego C. Tia... a tworzenie zmiennych, zmienianie ich rozmiarów i dynamiczna alokacja pamięci są nawet prostsze (; Do niektórych zastosowań assembler ma sens, ale tych zastosowań jest coraz mniej - niestety lub stety - zależy co kto...
Sorry ~Radek , ale nie pokazuj proszę tego kodu jako przykładu rozwiązania tego zadania. 1) po co Ci w ogóle wsk_2? 1a) przydzielasz pamięć na tablicę, a jej nie zwalniasz. 2) czemu dynamiczna alokacja pamięci? Przecież rozmiar jest znany i zawsze równy 100. 3) program się zapętli, jeśli wpiszesz...
Pierwsze lubię, a drugie jako temat do zastanowienia. funkcja typu low_level_init() to prosta sprawa, ale identyczny startup dla tych dwóch rdzeni to raczej sztuka dla sztuki (coś jak startup w C <: ) - praktycznie byłyby to dwa bloki z #if ... #elif ... #endif, bo te startupy są naprawdę różne... ...
Proszę o pomoc bo nie umiem sobie poradzić z destruktorem. Tworzę drzewo binarne korzystając z dynamicznej alokacji pamięci, a destruktor ma je usuwać z pamięci. Niestety, gdzieś popełniam błąd, którego nie potrafię znaleźć. Proszę o pomoc. Załączam cały program, ale błąd jest w destruktorze. [syntax=c] //Drzewo...
Tak, dobrze to pokazałeś. Najłatwiej sobie rozkminiać takie problemy w symulatorze. Masz na wszystko podgląd. Dodano po 3 Moim prywatnym zdaniem jednak używanie dynamicznej alokacji pamięci w uC, który tej pamięci ma pojedyncze KiB, jest pozbawione jakiegokolwiek sensu i jest proszeniem się...
pamiętaj również o dynamicznej alokacji pamięci dla tej zmiennej (konieczne, jeśli nie znamy rozmiaru tablicy)
To zacznij o czegoś prostego np, klasa zmiennej zespolonej albo klase macierz wielowymiarowej z dynamiczną alokacją pamięci i ze zliczaniem odwołań. Najlepiej te macierz zrobić jako template wtedy można podstawić zmienną zespoloną i przetesować obie klasy. Opisany wyżej problem był rozważany u mnie na...
mam problem, potrzebuje stworzyć bazę danych ze struktury, kasującą, dodającą rekordy(dynamiczna alokacja pamięci), sortującą rekordy(nie używając qsort), zasadniczo ma już wpis do bazy, przeglądanie, zapis do pliku, czytanie z pliku danych oddzielonych separatorami, wyświetlanie konkretnego pola w strukturze,...
Dynamiczna alokacja pamięci. ... int *tab, rozmiar; cout << "ile elementow? "; cin >> rozmiar; tab = new int[rozmiar]; ... //na koncu kodu źródłowego delete [] tab; Do elementów tablicy odwołujesz się tak jak zwykle. pozdrawiam
A możecie mi jeszcze powiedzieć jak ustawić: HeapSize, CSTACK i RSTACK, bo coś chyba zamieszałem i mi się zawiesza KIT?? Nie ma na to prostej odpowiedzi. CSTACK to w zależności od tego ile najwięcej zmiennych lokalnych musi być przechowywana naraz. Zdaje sie że też wchodzą do niego zmienne typu STATIC...
polecenia które mają na początku "f" dotyczą plików - od "file". Plik to oczywiście nie plik na dysku, to po prostu struktura, która zawiera w sobie informacje jak do niej pisać. Można takie struktury tworzyć dla LCD, 1wire i czego dusza zapragnie, ale moim zdaniem nie ma co mieszać. Przy użyciu zwykłego...
Do tej pory myślałem że C++ to największy HardCore jaki może być, ale jeżeli poza dodanymi dodatkowymi bajerami nic ze zwykłego C w nim nie ubyło, jak również nie ma przymusu korzystania z jego dobrodziejstw, to OK :D Ale tak jak pisałem nieprędko na niego przejdę. Nie ma to dla mnie najmniejszego sensu,...
Eeee... A po co, skoro i tak zapis do EEPROMu realizowany jest blokowo? A nawet jeśli by nie był, to wystarczy zrobić sobie funkcję, która ten zapis będzie realizowała właśnie w taki sposób? Tak czy siak nie rozwiązuje to problemu autora, ponieważ problem ten jest dosyć skomplikowany [; Ze swojej...
28 maja 1959 roku uznaje się za dzień, w którym powstał COBOL - jeden z pierwszych i najpopularniejszych języków programowania na świecie. COBOL to skrót od Common Business-Oriented Language, języka stworzonego głównie do programowania dla ekonomii i biznesu. Według raportu Gartner Group z 1997 roku,...
Zrozum, że w C przekazywanie tabeli do funkcji ZAWSZE odbywa się przez referencję, nigdy przez wartość. Stąd w tym przypadku przekazanie do funkcji tabela lub &tabela jest dokładnie tym samym. Podobnie jak void *ptr=tabela to dokładnie to samo co void *ptr=&tabela, lub void *ptr=&tabela[0]; Jak nie...
Może nie ma miejsca na stercie i nadpisujesz stos, albo coś? Albo wskaźniki stosu i sterty są tak blisko siebie? Ogólnie działa Tobie dynamiczna alokacja pamięci (malloc)? Nigdy nie programowałem procesorów, nie znam tez architektury, ale spojrzałem szybko w kod i takie rzeczy mi się nasunęły.
Teoretycznie funkcja malloc() przy braku miejsca zwraca NULL- jednak nie używam dynamicznej alokacji pamięci także ten sposób odpada napisać funkcję kontrolującą stos, odpalić w symulatorze tylko jak taka funkcja miała by wyglądać coby informowała o nałożeniu się stosu na sekcje danych... jedyne...
Właśnie taką pisze, biblioteka napisana w C a oparta na pomyśle GTK+ (obiekty), obsługa touchscreen, widgety Androidowe. Biblioteka w stadium alpha, ale ładnie już działa, wymagania: - C - dobra znajomość: potrzebna aby połączyć bibliotekę z własnym LCD + własne prymitywy rysowania (info niżej) - fopen -...
Zrób dynamiczną alokację pamięci. float **tab = new float *[3]; tab[0] = new float[rozmiar1]; tab[1] = new float[rozmiar2]; tab[2] = new float[rozmiar3]; // jakieś operacje na tablicy for(int i = 0; i< 3; i++) delete[]...
Temat rzeka. Przede wszystkim jaki język i jaki kompilator? Bo wiele z tych rzeczy kompilator potrafi robić automatycznie - np. inlinowanie funkcji, optymalizacja pętli itd. Nie ma sensu go w tym wyręczać. W takiej sytuacji należy się raczej zastanowić jak przekazać kompilatorowi wszystkie informacje...
To małe podpowiedzi - użyj typedef, żeby nie tworzyć takich typecastowych potworków :) I druga - pamiętaj, że tablica wskaźników to tylko tablica wskaźników. Zasadniczo implikuje to użycie dynamicznej alokacji pamięci, albo przypasanie wskaźnikom wyłącznie adresów zmiennych globalnych, nigdy nie lokalnych....
Funkcja taka powinna przyjmować wskaźnik na "const char*", skoro i tak go nie zmienia (wiem że go nie zmienia, bo jakby próbowała, to byś miał zwiechę przy stringach z flasha) i wtedy problemu nie ma. Taki dobry nawyk (; Jeśli "parametr wskaźnikowy" nie jest modyfikowany, to powinien być const i tyle....
0. Żeby wyszukiwało pliki w podfolderach trzeba je podać wprost w odpowiedniej linijce w Makefile. 1. Treść chyba mówi sama za siebie. 2. W przykładach plik ten jest lekko zmodyfikowany - z tego co pamiętam wystarczy wpisać "void" do pustego nawiasu i już. 3. Potrzebne Ci będą też syscalls, ewentualnie...
Ja się zgodzę z kolegą Tymonem, że warto zaczynać naukę C na PC. Rozpoczynanie jej na mikrokontrolerze jest drogą przez mękę, w dodatku uczymy się od początku źle. A to dlatego, że zapominamy o różnych poziomach abstrakcji o których piszesz (ba, w ogóle się nie dowiemy, że coś takiego jak HAL może istnieć),...
Z ilością miejsca jest właśnie problem. Przyrost 20kB jak na razie nie jest dopuszczalny. Co do sprintf'a dzięki za linki. Już sobie z tym poradzę :) Nie chcę zaczynać nowego wątku, więc napiszę to tutaj. Chodzi o implementację funkcji sscanf, która nie korzysta z dynamicznej alokacji pamięci. Czy...
volatile to trzeba, zazwyczaj jak jakaś wartośc zmiennej się nie zmienia dostatecznie szybko to należy użyć volatile. to wykluczą rolę "wróżki" z procesora. ale tutaj tego nie trzeba. masz błąd logiczny, w pierwszym programie wygląda to tak: -przejdź na koniec listy; -wypisz przedostatni element; -stwórz...
Witam! Ponieważ przeżywam ponowny okres fascynacji C++ postanowiłem ponownie wykonać kompilację bibliotek kompilatora z wyłączoną obsługą wyjątków. Szczególnie rozchodzi się oczywiście o libstdc++ i libsupc++. - Download > ARM > Różne > gcc-arm-none-eabi-4_6-2012q2 libstdc++ no exceptions Niektórzy...
Przecież istnieje coś takiego jak dynamiczna alokacja pamięci to raz a dwa to moja linijka przecież ma już znany rozmiar na etapie kompilacji.
1. Czy ten syscall.c jest w ogóle teraz potrzebny nic z nim na razie nie robiłem. Teraz nie, ale przy używaniu pewnych funkcji (czasem jedynie "pośrednio" tzn. nawet nie wiesz kiedy zaczynają być potrzebne) linker zacznie się burzyć o brak funkcji typu _write_r, _sbrk_r, _exit, _isatty_r (ogólnie...
co muszę zrobić, żebym mógł tak go używać?;] czy można stworzyć po prostu strumień do którego wpisywałbym dane za pomocą fprintf jak to było np. w AVR-GCC? czyli np. fprintf(&LCD, "Hello World"); czy już tak łatwo to nie pójdzie?;P Jeśli mowa o printf() z newlib, to nie jest to aż takie proste......
Rozbudowuję moją aplikację o dynamiczną alokacje pamięci - prosty stos FIFO. fifo.c Warning implicit declaration of function 'push' - jak to interpretować? kompilator myśli, że deklaruje po raz kolejny funkcje push? Na tym etapie z warningami, stos FIFO działa poprawnie. Kiedy próbuję dodać...
Witam. Chciałbym zapytać czy posiada ktoś terminal uart napisany w języku c. Udało mi się nawiązać połączenie (obustronne) z atmegą8 włączanie i wyłączanie próbkowania adc odbywa się przez klawiaturę komputera natomiast dane(napięcia na poszczególnych 3 kanałach) wyświetlane są w terminalu Realterm....
Witam znalazłem kod programu terminala uart napisany w języku c. Dane wysyłane z mikrokontrrolera zapisywane są w buforze BYTE RS_buf; natomiast wyświetlane w konsoli przez printf("%c", RS_buf);. Mój problem polega na tym, iż chciałbym aby dane w moim przypadku są to trzy liczby oddzielone znakiem| zostały...
Witam, Tak już robiłem i np. SRAM = .data + .bss wychodziło mi około 12kb a procek miał 32kb. Czyli to by oznaczało, że reszta to stos, czyli że te 20kb stosu jest za mało? Nie używam dynamicznej alokacji pamięci. Pozd
Aby ci to działało to MUSISZ zaimplementować swoje własne syscalls dla open, read, write, close itd. (nie wszystkie muszą działać prawidłowo, choć powinny). Pod tym linkiem który podałeś są przecież nawet podane funkcje (_read_r(), _write_r(), _open_r(), ...). Dodatkowo konieczna jest implementacja...
Witam Uczę się o dynamicznej alokacji pamięci, i nie wiem czemu program nie działa. Funkcja ma wypełnić tablicę dwuwymiarową kolejnymi liczbami, a następnie zwrócić ją do maina. Bardzo proszę o wskazówki: [syntax=c] #include<stdi... **funkcja(int n); int main(void){ ...
Zgodnie z nazwą ten problem da się rozwiązać jedynie poprzez dynamiczną alokację pamięci (; Niemniej jednak nie musi to być koniecznie malloc() czy new, wystarczy np. jeden wielki bufor, z którego w swoim programie "odcinasz" potrzebne Ci kawałki - to po prostu byłaby Twoja sterta. Niemniej jednak zbyt...
Mam nadzieję, że rozumiesz wskaźniki. a jest int-em, więc ma wielkość int p_a jest wskaźnikiem na int, więc alokujemy pamięć dla tablicy int-ów pp_a jest wskaźnikiem na wskaźnik na int, więc alokujemy pamięć dla tablicy wskaźników na int adres (&zmienna) zawartość (zmienna) wyłuskanie...
Problem pojawia się przy wyjściu ze stanu CHARGE_B. Jak reprezentować operację współbieżną? Co zrobić, gdy w obu gałęziach będzie po kilka kroków? Co zrobić, gdy w gałęzi będzie kolejny fragment współbieżny? Rozmiar kodu już robi się kłopotliwy, brakuje całego środowiska wykonania, które PLC po...
Robo24 napisał: Z dynamiczną alokacją pamięci na mikrokontrolerach trzeba uważać, często powoduje problemy. Niektóre kompilatory nie dopuszczają opcji dynamicznej alokacji pamięci, nawet nie umożliwiają wywołania rekurencji (model reentrant i non-reentrant). Szczególnie dla uc 8-bitowych....
Nawet jeśli longjmp nie przywraca trybu procesora, chyba można to zrobić przed lub po skoku? RETI umożliwia jednoczesny powrót i włączenie przerwań. Gdyby chcieć zrobić to osobno, najpierw należałoby powrócić, a następnie włączyć przerwania. Normalnie nie jest to możliwe, bo powrót jest do nieustalonego...
Faktycznie! Jeśli nie przekroczę 4 breakpointów to nic się złego nie dzieje. W kail-u wyświetla się okienko informujące że nie można dodać kolejnego breakpointu (max to 5). Dzięki Freddie! Mam jeszcze jedno pytanie. Chciałem użyć w projekcie kontenerów z biblioteki standardowej C++ (konkretnie...
Wskaźnik na dynamiczną alokację pamięci: [syntax=cpp]int rows = 5; int cols = 5; int **matrix = new int *[rows]; for (size_t row = 0; row < rows; row++) { matrix[row] = new int[cols]; for (size_t col = 0; col < cols; col++) { std::cin >> matrix[row][col]; } }[/syntax] [syntax=c]int...
(at)dasej Proponuję abyś poczytał wpierw co to jest tzw storage duration. W C masz 3 rodzaje: static auto i allocated. Static to zmienne globalne oraz zmienne w funkcjach z atrybutem `static` Auto to zmienne (a raczej generalnie obiekty) zadeklarowane w funkcjach Allocated - utworzone przez...
Ambarella, firma zajmująca się półprzewodnikowymi systemami sztucznej inteligencji (AI), zaprezentowała niedawno pierwszą na świecie scentralizowaną architekturę radaru do obrazowania 4D. Ta umożliwia zarówno centralne przetwarzanie surowych danych radarowych, jak i głęboką, niskopoziomową fuzję...
Dynamiczna alokacja jest po to aby na sztywno nie rezerwować całego obszaru LCD tylko w zależności od potrzeb, jak ci się nie podoba rezerwacja dynamiczna powołaj tablice jako globalna i przekazuj funkcji. Ja nie narzekam na kod wszystko się fajnie analizuje. Dodano po 56 czyli jak dam +1...
Poza stosem w SRAMie masz jeszcze przynajmniej: - stertę - dynamiczna alokacja (malloc, new) - sekcję data - wszelkie globalne i statyczne zmienne inicjowane jakąś wartością - sekcję bss - jw. ale zerowane przy starcie programu poza tym możesz sobie tworzyć własne sekcje, latać wskaźnikiem po pamięci...
To nie totolotek. Zabezpieczenie zadziała. Ale prawdą jest, że to zabezpieczenie aby alokacja pamięci nie pojechała po stosie, a nie przed nadmiernym wzrostem stosu. No właśnie, to takie w jedną stronę (a dla mnie "w pół strony"), bo jak na początku main() zaalokujesz dynamicznie całą wolną pamięć...
W przypadku makra LD_DWORD() zapewne z bufora należy odczytać więcej niż rozmiar zmiennej "wc". A nie powinno być: memcpy(&wc, buf, sizeof(buf)); ? Absolutnie nie. No właśnie program na początku zawiesza się i dopiero po kilku resetach odczytywana jest zawartość karty SD więc może to właśnie...
Ona już jest zmienną globalną i chyba nie ma sensu kombinować z tym. Ale oczywiście wszystko zależy od ciebie i tego co chcesz osiągnąć. A problem alokacji pamięci można rozwiązać prosto, jeśli nie chcesz używać alokacji dynamicznej - wystarczy do funkcji przekazać wskaźnik na wcześniej zaalokowaną pamięć,...
Musisz jednak być świadom co niesie za sobą przejście na C++. Wyjątki w c++ to duży nakład kodu (30kB lub nawet więcej) do tego dochodzi jeszcze RTTI, potrzeba implementacji alokacji pamięci itd, itp. Wszystko można włączyć/wyłączyć, jednak trzeba wiedzieć co i jak. Jeżeli masz do czynienia z...
Szybka odpowiedź. Trzeba Ci wiedzieć jak działa procesor i Memory Management Unit (MMU). Działa tak, że buduje z kawałków pamięci fizycznej, pamięć wirtualną. Z kawałków o ustalonej długości, im mniejsze kawałki tym lepsza oszczędność pamięci ale większa tablica mapowania fizycznej pamięci na wirtualną...
Witam. Mam do napisania program, oto treść 'zadania' : Zdefiniuj typ strukturalny zawierający 3 pola (int, char, double ). Następnie zaimplementuj funkcje do obsługi zdefiniowanego typu: 1. losowanie – funkcja: a) pobiera jako argument liczbę N struktur, które mają zostad utworzone; b) dynamicznie...
Oczywiście myślałem o sytuacji w której przechowujemy tylko wskaźnik do następnej pozycji, bez wskaźnika na dane - nie jest on potrzebny, gdyż dane są o stałej długości. Można to dodatkowo zoptymalizować, wykorzystując fakt, że na małych procesorkach do adresacji SRAM wystarczy tylko 8-bitów, można też...
Czyli rozumiem, że mogę sobie wywoływać funkcję w której tworzę jakąś zmienną tak jak w tym przypadku nawet i milion razy a i tak nie musze się obawiać tak zwanego "wycieku pamięci" bo przy wyjściu z funkcji kompilator sam zadba by ją ubić w sensie zwolnić pamięć? Nie do końca o to chodzi, niby...
Przy tym założeniu idea użycia dynamicznej tablicy całkiem traci sens - bo po co tu dynamika? Dlatego przecież pisałem też o std::array<>. std::vector<> nie sprawdza błędów, tzn. nie ma takiego wymogu. Mnie chodzi o zarządzanie zasobami. A nie zgodzę się, w przypadku operatora new...
Wiki: SOM-3 w trzech wersjach (w tym wersja EXTENDED - wielozadaniowy z dynamicznym przydziałem pamięci); CROOK – oparty na ideach systemu Unix. Z tego co wiem to nie jesteś fanem ani dynamicznej alokacji ani abstrakcji związanej z plikiem w Unixie. Nadal Twoje argumenty są niedorzeczne.
Witam, jesli jej nie usuniesz, program zostawi po sobie śmieci w pamięci. W dodatku gdy częściej będziesz używał takich instrukcji i nie będziesz usuwał zaalokowanej pamięci, wycieknie ona. Jest wiele programów do badania wycieków pamięci i jeśli używasz dynamicznej alokacji, zawsze warto takiego użyć. Pozdrawiam,...
Po raz kolejny proszę o radę, bo wydawało mi się, że mam po prostu za mało RAMu i już myślałem o tym, żeby dołożyć zewnętrzną pamięć, ale pomyślałem, że zobaczę najpierw czy jak nie będę używał malloca, to program jakoś będzie chodził. Niestety mimo że nie ma w ogóle dynamicznej alokacji pamięci, to...
ewentualnie sterty (tylko w C++??) Ze sterty korzystasz dynamicznie alokując pamięć, w C za pomocą malloc i temu podobnych. Zwalniasz za pomocą free. Wielkość zużywanej tam pamięci jesteś w stanie oszacować analizując program i wykonywane alokacje, ale trzeba pamiętać o możliwej fragmentacji takiej...
Generalnie: 1. Czemu tablica przechowująca macierz jest jednowymiarowa i do tego alokowana statycznie? Taki błąd na dzień dobry dyskwalifikuje rozwiązanie. 2. Czemu metoda wielkość jest prywatna? Przecież o to chodzi że zewnątrz obiektu użytkownik chce zobaczyć ile jest zajętej pamięci. 3. Czemu w...
Jeśli chcesz to zrobić w strukturze, która pojawia się gdzieś w programie i miec wpływ na wielkość tablicy w każdym egzemplarzu struktury, eleganckim rozwiązaniem jest dynamiczne przydzielenie pamięci. struct pole{ int r,p,q,nr; }; struct Nadrz_dane{ pole *wezel; int MAX; };...
Stos dla programu głównego jest w Twojej konfiguracji całą resztą pamięci. Używasz dynamicznej alokacji? No a poza tym to zwiększyłeś go ledwo dwukrotnie - masz przecież 128kB pamięci - możesz na ten cel spokojnie wywalić kilka kilobajtów, a nie nędzne 256B - zwłaszcza gdy szukasz błędów. Ta zmienna...
Po co alokować i zwalniać pamięć związaną z LCD, skoro wiadomo, że do poprawnego działania tej pamięci MUSI być tyle, ile potrzebuje najbardziej złożony ekran? A jeśli jej zabraknie - urządzenie się wywali. To co piszesz nie jest prawdą. Urządzenie wywali się tylko gdy błąd będzie krytyczny i nie...
Mam coś takiego: Stosując funkcję malloc() dokonaj alokacji pamięci dla zmiennej dynamicznej typu int. Następnie program ma sprawdzić, czy wczytana liczba jest liczbą pierwszą. Czyli mam najpierw za pomocą malloc "zarezerwować" adres w pamięci o danej wielkości a potem do niego przypisać wartość? Tym...
1. Wiemy podczas pisania programów na architekturę ARM programista decycyduje za pomocą skryptu linkera gdzie w pamięci leżą sekcje programu generowane przez kompilator. Najczęściej wygląda to w ten sposób: Nie do końca tak to wygląda dla ARM, choćby dlatego, że zwykle między flash a RAM jest spora...
A macie może jakieś materiały jak używać "char" ? mógłbyś wyjaśnić co masz na myśli? chodzi Ci o to, że czytasz do zmiennej typu char znaki? jeśli tak potrzebujesz poczytać o dynamicznym przydzielaniu pamięci. przykładowo char *wsk; wsk=new char[50]; // wskaznik na tablice 50 elementow char ... delete...
Nastukałem coś takiego. Może się przyda. #include <iostream> #include <fstream> using namespace std; const int buffSize = 1024; int main() { char buff[buffSize]; char **explode, explodeChar = ' '; int count = 0, explodeIndex = 0, tmpIndex...
Co do Stosów. Mówiłem że profilaktycznie ;p Ostatecznie zamierzam zostawić 4096B na stos programu głównego na potrzeby printf-a. Do ABORT czy SWI to i po 32B wystarczy (kiedyś zamierzam dorobić obsługę). Tylko że teraz nie miałem pojęcia co jest i wszędzie pozwiększałem ;p CO do dynamicznej alokacji....
Całość powinna dać się zrobić w parę dni - jak skończę to tutaj dodam pliki jakie powstaną. Co tam słychać w sprawie... ? :P Gdzieś już na forum pisałem - GUI z ST jest niespójne pkt XY(0,0) dla Recoucera i GLCD są w różnych miejscach, zamienione XY, błędy w alokacji pamięci, brak mechanizmu zdarzeń,...
Da się to zrobić robiąc heapa programowego, no ale tu pozostaje kwestia tego jak tym heapem zarządzać. Można mieć heap per object (każda klasa ma z góry założoną pulę pamięci jaką można przeznaczyć na obiekty), ale w bardziej złożonych przypadkach wymaga to napisania jakiegoś chociażby prostego MemoryAllocatora,...
Witam! Próbuje na wszelkie sposoby i nie udaje mi się znaleźć błędu w programie. Otóż moje skromne dzieło ma dodawać do siebie duże liczby naturalne liczące po ok 100znaków każda i robi to w miarę dobrze dla liczb liczących dokładnie do 23znaków. Potem zaczynają się problemy z błędnymi wynikami i następuje...
1. Jeśli używasz C++, to w tym toolchainie naprawdę są wyłączone wyjątki. W tym od ARMa w "normalnej" konfiguracji wyjątki pojawią się zwykle natychmiast po użyciu dowolnej funkcji z biblioteki. W efekcie rozmiar aplikacji rośnie o kilkadziesiąt kB, wraz ze zużyciem RAM. 2. W mojej opinii opcje newliba...
gdzie może być błąd wychodzą dziwne liczby Z tego co tu można wyczytać ze schematu wynika, że ma zostać utworzona tablica dynamiczna o rozmiarze zgodnym z wprowadzaną liczbą. Następnie powinna ona zostać wypełniona odpowiednimi wartościami (liczbami). Nie znam się na C, ale wygląda jakby brakowało...
Witam. Parę pytań, przemyśleń, proszę o wypowiedzenie się. Temat dotyczy programowania embedded C głownie mikrokontrolerów raczej większych 32 bitowych. 1. Stosowanie wielu zmiennych globalnych jest bee Czy w świecie embedded bez dynamicznej alokacji pamięci da się inaczej? Zakładając, że mamy...
A jak wygląda zarządzanie pamięcią w tym RTOSie? Czy można bez przeszkód używać dynamicznej alokacji nie obawiając się HardFault co kilka minut? Na chwilę obecną szansę na HardFault masz sporą, ponieważ muszę dodać w końcu implementacją funkcji __malloc_lock() i __malloc_unlock() (jest to na razie...
Witajcie moi drodzy. Przedstawię tu pierwszy na świecie tutorial programowania modułu WiFi WB2S, czyli BK7231. Moduł ten występuje w wielu urządzeniach smart home, a w internecie panuje opinia, że nie można stworzyć dla niego własnego firmware. Nic bardziej mylnego - pokażę tu krok po kroku...
Zmienna result nie może być wskaźnikiem bo scanf przez %s kopiuje zawartość źródła do zmiennej która siedzi pod %s. To znaczy może być wskaźnikiem ale musi wskazywać na jakiś obszar pamięci a nie na przypadkowe "gdzieś w pamięci". Dwa, że obszar trzeba zainicjować zerem w pierwszej komórce na wypadek...
Generalnie debugowanie przy pomocy tak prostych rzeczy jak terminal, LCD czy nawet zwykły LED bywa bardzo proste i mało kosztowne ;) jak sprawdzić ilość wolnej pamięci w Procku?? Ma ktoś na to jakiś pomysł? Jakaś komenda typu memfree :) Może nie ma ale przy starcie programu zapisujesz całą...
Nie patrzylem w ten przyklad, nie wiem po co tutaj sie okresla ten rozmiar i czy on jest maxymalny czy minimalny? Może się autor wypowie. W przykładach (w skrypcie linkera) ustawiany jest rozmiar maksymalny. Ułożenie w RAM jest następujące: data - bss - stos 1 - stos 2 - sterta. Co do sprzętowej...
czy ogranicza mnie wielkość SRAM'u? Nie sądzisz chyba, że przy alokacji dynamicznej (czy jakiejkolwiek innej) możliwe jest cudowne powiększenie pojemności pamięci, no nie? 4\/3!!
A jak inicjalizujesz stos? Ponieważ kod startowy C inicjalizuje stos bardzo wcześnie, najpewniej jest on inicjalizowany zanim zainicjalizowany zostaje kontroler SDRAM. Kod inicjalizacji SDRAM musisz umieścić w sekcji .init0. Druga sprawa, że ox 0x800000 zaszyna się wewnętrzny SRAM mikrokontrolera, sekcja...
Z tego co widzę w listingu wysyłającym dane przez UART masz zmienną koniec_kolejki, która to nigdzie nie jest funkcji podana. Jeśli jest to zmienna globalna, to musisz na takie zmienne uważać... Masz także tablicę dynamiczną *bajty, której nigdzie nie widzę alokacji. Jesteś pewien, że alokujesz pamięć...
W C++ można spokojnie zwracać zmienne przez wartosć, ponieważ wykorzystane zostanie "return value optimization". Ta optymalizacja jest wręcz obowiązkowa w C++11, w którym do tego celu zostanie użyte "move semantics". Zwracanie przez wartość to często najbardziej optymalna opcja jaką można zastosować! A...
`sprintf()` używa bardzo dużo pamięci. Niewinnie wyglądające `val * 3.3 / 4095;` to w istocie mnożenie na typie `double` (standardowy błąd osób które biorą się za zmienny przecinek). Proponuję więc zacząć od: - użycia `s i printf()` (wersja bez wsparcia dla zmiennego przecinka, zużywa dużo mniej RAMu,...