Teraz pozostało mi przenieść projekt z stm32 na lm3s, ponieważ zajmuję się tym w wolnym czasie od pracy, to efektem podzielę się pewnie za kilka dni. To naprawdę nie jest dużo roboty, generalnie (pomijając detale typu zmiana nazw plików czy nazwy projektu) trzeba zrobić mniej więcej "aż" tyle: 1. poprawić tablicę wektorów (to i tak byś miał kiedyś...
Ponieważ wskaźnik na tab[ww][kk] jest nieokreślony. [syntax=c]Matrix(int _w, int _k) : w(_w), k(_k) { int **tab = new int *[w]; for (size_t i = 0; i < w; i++) { tab[i] = new int [k]; // +++++++++++++++++ for (size_t j = 0; j < k; k++) { tab[i][j] = 0; } // +++++++++++++++++ } ObjectCount++; }[/syntax] [syntax=c]#include <iostream> class...
Dla dynamicznej alokacji pamięci ilość pamięci w systemie nie ma większego znaczenia. Nie ma granicy powyżej której ma ona sens, a poniżej już nie. Wszystko zależy od zastosowań. Tu kolega alokuje niewielkie ilości pamięci i być może ma to sens. IMHO dynamiczna alokacja pamięci jest demonizowana - jeśli wszystko robi się jak należy to jest to tak samo...
w wielu jezykach programista jest zwolniony z tego zmartwienia przez standardowe biblioteki. podejrzewam, ze wlasnie jakies rozwiazanie podobne do przedstawionego przez Ciebie jest stosowane do rozwiazania tego problemu. jedyna optymalizacja, jaka mi przychodzi teraz do glowy, to dynamiczna modyfikacja rozmiaru "kesow". Np: kazdy nastepny "kes" dodawany...
Wyłącz antywirusa i sprawdź czy tak samo laguje. Jeżeli program uruchamiasz pod Windowsem, to miej na uwadze że Windows pedantycznie troszczy się o ilość wolnej pamięci, alokując ją na dysku, zamiast w ram'ie, choć wolnego ramu jest jeszcze od groma. Jeżeli masz conajmniej 1GB ramu (dobra granica dla XP), to wyłączenie "pliku wymiany" na wszystkich...
Bo wogóle pierwszy malloc nie może brać rozmiaru 6*sizeof(int) ale 6*sizeof(struct bazadanych *)
W zasadzie tak nie należy robić. Dwie gwiazdki obok siebie to już jest podejrzane, a le trzy.... ;) Ale jeżeli chodzi tylko o gimnastykę z językiem C, to trzeba to zrobić tak: Dodano po 28 Tak, taka jest składania. Zmienna tablica wewnątrz funkcji funkcja() jest wskaźnikiem na zmienną tablica z funkcji main() . Trochę mylące jest użycie tej samej nazwy...
Której linii dotyczy komunikat? Coś mi się zdaje, że zamiast jeden.(*dane)=1; powinno być *jeden.dane=1;
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ę o błędy. A jakie znaczenie ma ilość dostępnej pamięci? Jeśli...
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 i cokolwiek Ci przyjdzie do głowy. Alokowanie dużej...
Zgadza się :) To jest alokacja dynamiczna pamięci dla tablicy indices, ale na stosie, tzw. VLA. O ile pamiętam, napisane było też, aby stosować to do tablic o małym łącznym rozmiarze ;)
Czy na pewno potrzebna jest ci dynamiczna alokacja pamięci? Rozważ poniższy przykład: [syntax=c]#include <stdio.h> int TABLICA[10][4]; void copy_tab(int dst[], int src[], int size) { for (int i = 0; i < size; i++) dst[i] = src[i]; } int main() { int TAB[4] = { 1, 2, 3, 4 }; copy_tab(TABLICA[3], TAB, 4); for (int i = 0; i < 4; i++) printf("TABLICA[3][%d]...
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 to też zadziała? Dodano po 15 A jeszcze jedna sprawa czy linia...
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ą i kupa innych kłopotów. Każda aplikacja porusza...
Witam Mam problem z programem, ponieważ, nie mam pojęcia dlaczego się wysypuje, wszystko wygląda ok. Na razie program ma stworzyć 2 tablice, jedną z nich wyzerować i wyświetlić. Stosowałem calloc, ale też się program wysypuje. Proszę o pomoc Pozdrawiam [syntax=c]#include<stdio.h> #include<stdlib.h> #define SIZE_X 80 #define SIZE_Y 22 void...
Poza tym po skompilowaniu Twojego kodu nie wyświetla średniej, która jednak musi być zawarta jako wynik działania programu. Wprowadź małą ilość, np 2 to zobaczysz że wypisze 3 punkty. http://ideone.com/VZ526V Pierwszy punkt wypisał się w wierszu z pytaniem, ostatni punkt to średnia.
http://www.cppreference.com/wiki/stl/vec...
iosteam na Atmega32? Nie do końca chyba rozumiem: jak przeczytałeś je i nigdzie jeszcze nie wrzuciłeś, to raczej już ich nie masz? A jak wrzuciłeś, to ciągle jeszcze potrzebujesz nowej pamięci dla nich? Prawidłowo, to chyba musisz mieć jeden bufor na najdłuższy łańcuch, a potem alokować dynamicznie miejsce na ten łańcuch i kopiować. Chyba, że chcesz...
Wszelkie zaliczenia, sprawdziany itd., mają sprawdzić poziom Twojej wiedzy, a nie poziom forum na którym piszesz. Skoro nie jesteś w stanie, po skończeniu jakiegoś kursu, tego zrobić... Cóż... uważam, że to oszustwo, żeby ktoś Ci w tym zaliczeniu pomagał. Temat zamykam. P.S.: I nawet nie napisał kolega o jaki język chodzi...
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ć na początek pliku main.c , bibliotekę fifo.h , zaraz otrzymuje...
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 pliku nagłówkowym strings.h. No i po trzecie, w definicja...
Witam! Kłaniaja sie wskaźniki do tablic! Mówiąc szczegółowo: chcesz inicjować tablice dwuwymiarowe; w związku z tym inicjujesz tablicę wskaźników do tablic n-wymiarowych, którym też musisz przydzielić pamięć! Zdrowych i wesołych świąt! KG
jeżeli masz listę jednokierunkową, to najpierw musisz odnaleźć element poprzedzający ten, który musisz usunąć. Resztę masz opisaną tu: http://www.elektroda.pl/rtvforum/topic90...
Co do powyższego to owszem, wskaźnik to po prostu komórka pamięci przechowująca adres do innej komórki, gdy dokonamy inkrementacji (++) lub dekrementacji (--) zmienimy zawartość wskaźnika, adres wskaźnika jest nadal ten sam. [syntax=c]int a[]={1, 2, 3}; int *b=&a; &a -operator adresu do zmiennej a ------------------------------------ Pamięć [0x00|0x01|0x02|0x03|0x04]...
Witam! A'propos "przytyku" Wszystko zawarłem w pierwszej odpowiedzi. Koledzy chyba posto-nabijacze ? A to fragment cytowanej, Twojej pierwszej odpowiedzi: 1. Pobierasz rozmiar tablicy przy użyciu scanf("%d", &rozmiar) zmienna rozmiar jest typu całkowitego. Skoro pobiera się rozmiar tablicy przy pomocy funkcji scanf od razu zakładam, że rozmiar tablicy...
Chodzi mi jak na stm zaimplementowałeś/skad wziales funkcje malloc/free.
Jak sam zauważyłeś, dynamiczna alokacja pamięci nie ma sensu we włącznikach światła i sterownikach windy. Nie będzie też miała sensu w zdalnym pilocie do bramy i w czajniku. Za to w systemie który jest podłączony do ethernetu i przyjmuje tyle połączeń na ile pozwoli mu dostępna aktualnie pamięć - czemu by nie? W sumie to nawet nie wiem po co dyskutuję...
Przy proggramowaniu niedużych mikrokontrolerów dynamiczna alokacja pamięci nie ma sensu. Więcej pamięci zmarnujesz w związku z alokacją, niż jej zaalokujesz, a ponadto: kto inny miałby korzystać z pamięci, której w danej chwili nie używa jeden proces i jaką masz pewność, że ten inny proces nie zechce zaalokować pamięci w tym samym czasie, co ten pierwszy?...
Witam. Napisałem klasę która ma symulować macierz. W klasie zagnieżdżona inna klasa "wektor". W klasie tej mamy tablice na ileś liczb (dynamiczna alokacja) , wybieramy też ile ma być klas typu "wektor". W ten sposób możemy tworzyć macierz i to nie tylko kwadratową. Tutaj jest kod: /*zdefiniowana zostala klasa z zagniezdzona definicja klasy, klasa wektor...
Pytanie - w jakich branżach/rozwiązaniach używa się alokacji statycznej a w jakich można sobie pozwolić na alokacje dynamiczną. Myślę że to zależy od wielu czynników. Po pierwsze od tego czy taka alokacja dynamiczna ma w danym przypadku jakieś zalety. Jeśli projekt jest prosty, to np. bawienie się alokację dynamiczną nic nie da, za to przy bardziej...
większe obiekty powinieneś alokować na stercie No z tą teza w przypadku uK to bym polemizował. Dynamiczna alokacja jest dość karkolomnym, trudnym i niebezpiecznym narzędziem w przypadku uK. Zresztą wiele standardów jej zabrania
If addr is NULL, then the kernel chooses the address at which to create the mapping; Wystarczy czytać...
BlueDraco Nie mogę się z tym zgodzić. Jakoś w każdym szanującym się RTOS'ie jest dostępna dynamiczna alokacja pamięci. Oczywiście jest to często źródło problemów ale takie ale są sytuacje gdzie bez dynamicznej alokacji nie da się zbyt wiele zdziałać. W rzeczywistości w duzych projektach dzięki dynamicznej alokacji jest więcej dostępnej pamięci ;)....
Przecież istnieje coś takiego jak dynamiczna alokacja pamięci to raz a dwa to moja linijka przecież ma już znany rozmiar na etapie kompilacji.
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.
Kaj już kol (at)LChucki napisał - dynamiczna alokacja nie jest szczególnie dobrym pomysłem szczególnie jeżeli często alokujesz/zwalniasz. HardFault zostawia śladd na stosie i w rejestrach. Zobacz po prostu gdzie on wystąpił i co go spowodowało. https://mcuoneclipse.com/2012/11/24/debu... Albo zainstaluj sobie IDE, które...
Pierwsze trzy rzeczy o których pisze przemko nie mają wpływu na to działanie, natomiast ma rację dalej. Tylko, że to nie jest obiekt statyczny tylko automatyczny, musi być dynamiczna alokacja pamięci, żeby dane wskazywane przez wskaźniki nie traciły się po wykonaniu funkcji.
W przypadku tak prostych procesorow dynamiczna alokacja pamieci moze sie opierac tylko na tzw. alokacji jednorazowej tzn. raz przedzielony obszar nie bedzie juz zwolniony (fizycznie).Ilosc struktur potrzebnych do prawdziwego zarzadzania pamiecia jest tak duza ze w tak prostych architekturach nie ma to najmniejszego sensu.
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
Dzięki Freddie! Po odblokowaniu __USES_CXX i pobraniu syscalls kontenery działają jak należy. Mam jednak jeszcze jedno male pytanko: chcialem użyć standardowej kolejki FIFO (std::queue) do której w main-e wrzucam jakaś wartość natomiast w przerwaniu ta wartość odczytuje. W którymś ze swoich postów pisałeś ze dynamiczna alokacja pamięci w przerwaniach...
Ale malloc nie ma prawie nic do stosu. Dynamiczna alokacja umieszcza zmienne na stercie (heap). Jeżeli ten projekt dostałeś w takiej wersji (z make i startupem) to nie powinno być tutaj problemu, ale dla pewności sprawdź jaki masz rozmiar sterty (heap size) w startupie zadeklarowany (bodaj plik SAM7.s)
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 kodu od ST sobie to trzeba koniecznie przerobić,...
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 FreeRTOSa takich jak na przykład delay, więc lepiej...
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 CTRL-Z i enter (pod windowsem). 4) średnią liczysz jako...
free zwalnia obszar wskazywany przez wskaźnik, nie patrząc, co on zawiera. Zwolni tyle bajtów, ile było zaalokowanych przez malloc. Z tym, że wypada wspomnieć, że malloc/free, żeby w ogóle mogły działać, do każdego zaalokowanego obszaru dokładają (na ogół, szczegóły zależą od realizacji alokatora) min. dwie zmienne typu size_t - w procesorach 8- i 16-...
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 opensource-em sprawa nie jest trywialna. Niekoniecznie....
wczytuje z pliku dane, wykonuje na nich różne operacje (jest tam dynamiczna alokacja zmiennych, używam również vectorów, wszędzie zwalniam zmienne dynamicznie zaalokowane, co jeszcze mogę napisać, korzystam z biblioteki windows.h używam MessageBoxów i tym podobnych okienek). Program był robiony techniką proceduralno-zdarzeniową, nie obiektowo. Aha program...
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 rację) tu akurat chodzi mi o galsan, po prostu kod jest bardziej...
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 lubi. Ja początkowo uważałem, że assembler jest najlepszy...
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 o danej funkcji/bloku programu - np. w C atrybuty...
alokacja dynamiczna dynamiczna alokacja pamięci stm32 dynamiczna alokacja pamięci
rezystancja uzwoić pierwotny zmiana czasu letni zimowy kocioł ferroli sterownik
estyma sterownik pompa głębinowa kondensator
Migająca 4 razy czerwona dioda w Kukirin G2 Max - co oznacza? Komunikat "Brak modułu palnika" - co oznacza?