Masz w tym jeden błąd - po pierwszej instrukcji w pętli licznik będzie zawsze równy x-1. W związku z tym, pętlę musisz wykonywać tylko dopóki x>0. Zwracam tylko uwagę, że alokacja i zwalnianie pamięci zajmuje czas. Jeżeli chcesz zaimplementować coś na kształt stosu, to wydajniej od pomniejszania i powiększania zalokowanego obszaru jest alokować miejsce...
musisz zadeklarować wskaźnik do tablicy elementów typu "wskaźnik do elementów typu struct dane" w nastepujący sposób: Po co ? Przecież on potrzebuje zwykłą tablicę, czyli jeden wskaźnik na obszar pamięci zaalokowany przez menadżer sterty. Natomiast to co ty robisz, to wskaźnik na pierwszy element tablicy wskaźników. Fakt, w podanym kodzie jest trochę...
Tak, bo w rozwiazaniu B masz tablice wskaznikow, i pod kazdy z tych wskaznikow mozesz wstawic jedna strukture (jak masz u siebie w kodzie tablica[0]=malloc(sizeof(osoba)); ) ale nic nie stoi na przeszkodzie aby podstawic tam cala tablice (tablica[0]=malloc(sizeof(osoba) * 10); ).
bezpośredniego skutku zwykle nie ma (sizeof(char)==1), ale zamiast -zmieniłem nazwy ... read na read1 Ja bym zmienił na znaczącą, oddająca intencję projektową. Coś w rodzaju read_and_trim albo read_from_line czy read_one_from_line Nazwa która wyznacza funkcjonalność pomaga (nawet w projekcie jednoosobowym) się zdyscyplinować. A nie ukrywajmy, funkcja...
z kolei w ANSI służyła do tego funkcja malloc
h-doc: jeżeli yy jest równe np. 10, to ile pamięci przydzieli malloc?
Między innymi dla tego że nowy wpis dodawałeś do oryginalnej tablicy, zapisując go poza zaalokowanym obszarem.
Bo wogóle pierwszy malloc nie może brać rozmiaru 6*sizeof(int) ale 6*sizeof(struct bazadanych *)
struct Punkt *punkty=malloc(ile*sizeof(struct Punkt));
W tej pętli zliczającej niepotrzebnie wczytujesz liczbę do w, przez to "gubisz" liczbę elementów już wczytanych. Chyba jeszcze nie miałeś dynamicznego alokowania pamięci, nie można zrobić czegoś takiego: int tab[w][w]; ponieważ rozmiar deklarowanej tablicy w ten sposób musi być już znany podczas kompilacji, a wartość w jest dopiero znana...
Twoja tablica jest alokowana na stosie, ktorego jest ograniczona ilosc (w skrypcie linkera mozesz ja zwiekszyc). Tworzenie duzych obiektow na stosie nie jest zbyt dobrym rozwiazaniem. Powinienes w takim przypadku uzyc tablicy globalnej lub zaalokowac ja dynamicznie (za pomoca malloc).
Z czym masz problem? Do tworzenia dynamicznych tablic w C masz malloc.
http://pl.wikibooks.org/wiki/C/malloc tu jest wszystko opisane
To jest C, a nie C++ Wszystko, co alokujesz przez malloc() musisz zwolnić przez free()
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 main, gdzie dopiero zostanie określona liczba tych...
W funkcji głównej otwórz plik do czytania ("r") [syntax=c] FILE *source source = fopen("Zrodlo.txt", "r"); //[...] kod programu, nie zapomnij zamknąć pliku fclose(source); [/syntax] Następnie spróbuj użyć funkcji fgets(); czyta ona plik do pierwszego znaku nowej linii, bądź znaku końca pliku. Następnie umieszcza je w tablicy. Więcej o funkcji [url=http://pl.wikibooks.org/wiki/C/fget...
Poprawiłem kod dla czytelności, dopisz sobie resztę. Nie kompilowałem ze względu na niekompletny kod, liczyłem na swoją wiedzę: [syntax=c]#include <ctype.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 80 #define END "koniec" // struktura liczby calkowitej z iloscia cyfr do...
1. Wczytujesz dane funkcją scanf() do stringa 2. Parsujesz dane i określasz wielkość tablicy 3. Na podstawie wyznaczonej wielkości tablicy deklarujesz wskaźnik do niej i alokujesz odpowiedni obszar pamięci przy pomocy malloc()
Moim zdaniem AVR to stanowczo za małe mikrokontrolery, by zarządzać w nich dynamicznie pamięcią. Już sama funkcja malloc zajmie całkiem sporo pamięci FLASH. Pamięci RAM też w większości AVR nie ma jakoś wyjątkowo wiele, by było czym zarządzać. Inna sprawa, że malloc/calloc/realloc i free mają zastosowanie do tablic, których rozmiary nie są znane w trakcie...
Zapis zmienna[zmienna] przy definiowaniu zmiennej jest wybiegiem kompilatora, który przykrywa rzeczywistą alokację. Jak najbardziej musisz użyć new (czy tam malloc)
ale czy znajdziesz biblioteke z malloc dla avr?? jakos mi sie wydawalo zawsze, ze avr nie udostepniaja opcji dynamicznej alokacji pamieci... a sama alokacja, to bedzie np cos takiego... int rows = 6, cols = 5; double **a; a = malloc (rows * sizeof (double *)); if(!a) abort(); for (i = 0; i < rows; i++) {...
Witam, Zmiennych się nie tworzy, tylko deklaruje. Jeśli wiesz, ile maksymalnie razy wykona się pętla, to użyj tablicy: char tablica[ROZMIAR]; int i; for (i = 0; i < ROZMIAR; ++i) tablica[i] = ... Oczywiście ROZMIAR nie może być zmienną. Jeśli nie wiesz, albo Ci szkoda tyle pamięci na raz, to tablicę przydziel dynamicznie ->...
Witam Nie da rady tak zadeklarować tablicy. Musisz utworzyć ją dynamicznie. Poczytaj o funkcji malloc i jej podobnym. Pamiętaj o usunięciu tej tablicy pod koniec programu.
Proszę bardzo, to jest jedna z tych bardzo prostych implementacji, ograniczona do minimum. Dodawanie elementów wypełnia tablicę o określonym rozmiarze (STACKARRAYMAX elementów). Gdy zabraknie miejsca, nowa tablica zostaje zaalokowana i dopisana do końca listy. Ściągając elementy ze stosu, wyszukiwana jest ostatnia tablica listy z conajmniej jednym elementem....
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 najpewniej nigdy nie sprawdzasz, czy malloc przypadkiem...
w ANSI to robisz tak: #include <malloc.h> typedef int wektor[1]; void main() { int x=10, y=10; wektor* tablica = (wektor*)malloc(sizeof(int)*x*y); } pozdro
Jako pierwszy argumentow podajesz pewnie wskaznik na tablice, a drugi to pewnie wymiar, ale to mozne da sie obliczyc pewnie z sizeof(tablica). Jak chcesz dynamicznie tworzyc tablice o zmiennym rozmiarze, to uzywasz malloc().
A to w tym przypadku musisz dynamiczne zarezerwować pamięć pod tablicę znaków używając funkcji 'malloc(...)' podając jej ilość znaków do zarezerwowania (plus jeden zapasu na '\0'). Ale nie zapomnij potem w destruktorze zwolnić tej pamięci funkcją 'free(...)'.
Masz tendencję do pisania kodu w sposób uniemożliwiający jego łatwą analizę: - nigdy nie grupuj kilku instrukcji w jednej linii kodu - to formalnie dopuszczalne, ale kompletnie nieczytelne - korzystaj ze spacji do odseparowania wizualnie operatorów w wyrażeniach (z wyjątkiem -> , i * jako operatora wyłuskania) Teraz wracając do Twojego problemu: 1....
Nie przejrzałem całego kodu, ale od razu rzuca się w oczy błąd, na który kompilator powinien zwrócić Ci uwagę: double *oout = malloc(511 * sizeof(double)); // w C double *oout = new double[511]; // w C++
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." Przejrzałem instrukcje c++ i nigdzie nie znalazłem...
Potrzebuję w projekcie użyć dynamicznej alokacji pamięci, niestety malloc() zawsze zwraca mi NULL. 1. Proponuję nie używać malloc w projektach embedded. 2. Najprawdoposobniej sbrk jest tylko "kadłubkowa" dla zapernienia linkowania się kodu. Co zrobić: 1. Jeżeli się już uparłeś na "malloc" to proponował bym freeRTOS-a z jego implementacją heap4.c albo...
Statycznie zadeklarowanej tablicy nie da się rozciągnąć. Od razu musiałaby być zadeklarowana z zapasem. Można zmienić rozmiar tablicy allokowanej dynamicznie (malloc - nie new). Czasem reallokacja może zmienić adres - jest to wtedy realizowane przez utworzenie nowej tablicy i skopiowanie starej zawartości. Trzeba być na to przygotowanym - podany nagłówek...
Podobno w starych czasach, gdy moc obliczeniowa nie była największa i algorytmika, miała spore znaczenie na czas realizacji programu, to w kwestii wykorzystania pamięciożernych operacji na dynamicznych tablicach czy strukturach, było zapatrywanie by robić coś takiego w C z użyciem malloc/free , pewnie nadal tak jest, jednakże przy współczesnej technologii...
Utworzyłeś wektor o SIZE_Y elementach a wypełniasz SIZE_X pozycji
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; }; main() { Nadrz_dane drzewo; int liczba_pol...
Niezupełnie, to jest przecież stary dobry nieużywany już Pascal. Tablicą dynamiczną nazywano tablicę utworzoną poprzez New. Jej rozmiar teoretycznie może się zmieniać, ale jeżeli jest użyta stała to zmienia się tylko na etapie kompilacji. Czyli zwykła tablica wskaźnikowa o rozmiarze N elementów (moim zdaniem). W Pascalu Borlanda miało to nawet pewien...
Cześć, mam problem z wypełnieniem tablicy struktur liczbami pseudolosowymi. W programie, korzystając z funkcji malloc() dynamicznie alokuję pamięć dla tablicy, następnie każde pole struktury w tablicy chcę wypełnić liczbą z zakresu <-50, 50>. Program się kompiluje, ale odpowiednie wartości pól każdej ze struktur są takie same. Co może być tego...
We "współczesnym" c++ (masz takie w devc++) biblioteka standardowa oferuje tzw. kontenery, niektóe z nich potrafią się zachowywać jak tablica dynamiczna. W twoim przypadku możesz skorzystać np. z kontenera typu vector, krótki opis znajdziesz tutaj: http://bielsky.elektroda.net/vector.html Aha...i jeszcze jedno: czyli wynika z tego że w C++ nie ma odpowiednika...
Proba zaalokowania wiecej niz jednego elementu klasy macierz konczy sie niepowodzeniem, tylko jeszcze nie widac efektow. Zmienna zadeklarowana jako class macierz **A jest wskaznikiem na wskaznik, czyli etykieta, ktora wskazuje na jakis adres w pamieci, pod ktorym przechowywany jest jakis inny adres (elementu docelowego). Inaczej jest to tez jednoelementowa...
Albo używa się C-towych funkcji malloc, calloc, realloc, free itp, albo new/delete. Nie wolno tego mieszać. Używając new/delete niestety pozostaje jedynie utworzenie owej tablicy i skopiowanie. W podanym przykładzie masz 2 błędy - nie kopiujesz to nowej tablicy tab i próbujesz reallocować tab a chyba chciałeś tab[i]. No i jeszcze coś - ostatni wiersz...
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ęć dla jej wskaźnika (malloc)? Jeśli tak, to na jaki...
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, Poniższy fragment kodu ilustruje stosowaną przeze mnie metodę tworzenia dynamicznych tablic wielowymiarowych, głównie 2-wymiarowych. Przydzielam je jako JEDEN spójny obszar pamięci, dobrze jest je zorganizować wierszami ze względu na zgodność ze statycznymi tablicami w tj. double A[8][8]; double *B = (double *)malloc(8*8*sizeof(double)) były...
Kompilator nie przyjmuje bo masz zupełnie pomylone typy. Może po prostu uprościć to wszystko do: char * tab=(char *) malloc(wymiar_x * wymiar_y); a odwoływać się przez: tab[wymiar_x*x + y]
A jaki jest dokładnie problem ? Może to nie jest wina po stronie tego kawałka kodu co przedstawiłeś. Ogólnie inkrementacja w C nie zawodzi. Nie znam C za dobrze ale Twój sposób zainicjowania struktury wzbudził we mnie kontrowersje. Zawsze byłem przyzwyczajony do używania funkcji malloc w takich przypadkach. liczba_nosnikow *ln = (liczba_nosnikow*)malloc(siz...
Mam pewien problem z wskaźnikami do dynamicznej tablicy. Tablicę tworzę tak: [syntax=c] int **tablica; //n - kolumny, m - wiersze tablica = (int**)malloc(n * sizeof(int*)); for(i=0; i<n; i++){ *(tablica+i)=(int*)malloc(m*sizeof(int))... } [/syntax] Następnie chcę utworzyć wskaźnik do tej tablicy i wywołać funkcję (wypelniajaca tablice zerami)z tym...
Tak na szybko :wink: 1) Program dlatego (po kompilacji) jest taki duzy, bo: char lista[8000000]={}; (zadeklarowales statyczna 8MB talice - stad rozmiar programu 8MB) Mozna (taka tablice) utworzyc dynamicznie, np.: char *lista; int main() { ... lista=(char *)malloc(8000000); ... obliczenia ... free(lista); ... }
myślałem o instrukcjach wybory switch(x) w której to argument x byłby poziomem w menu, a w tych switch(x) były by zaś takie same switch(y) gdzie y to byłby poziom podmenu ale niewiem czy takie coś to dobre myślenie. Za dużo niepotrzebnego kodzenia, lepszy wyborem jest pewna struktura opisująca obiekt, bardzo przydatne wskaźniki na funkcje, wskaźniki...
char st1 to nie zadziala. tablice nalezy inicjowac rozmiarem znanym podczas kompilacji. masz wiec dwa wyjscia: 1. albo rozmiar na sztywno 2. albo szybki kurs uzycia funkcji malloc i obslugi dynamicznego przydzialu pamieci (obstawiam, ze jak procek nie ma pozadnej ilosci RAMu, to nawet nie ma co probowac) x = 53.7; <-------------------- tu muszę...
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ę tego zrobić, a mieszanie malloc i new nie jest wskazane....
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 coś do nicd dodać, a reszta programu ma tej zmiany nie "zauważyć". Najbardziej brutalna...
Prawdopodobnie zepsuta jest lista wolnych bloków, na skutek jakiegoś zamazania pamięci. Jeśli masz jakieś dynamicznie allokowane tablice, to sprawdź dokładnie, czy nie wychodzisz poza zaalokowaną wielkość. Taka jest najczęściej przyczyna podobnych problemów, jednak nie wyklucza to innych.
Wprowadziłem takie zmiany, kompiluje się i tym razem taki błąd: _CrtIsValidHeapPointer(pUserData) [syntax=cpp] #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include "stdlib.h" #include "time.h" typedef struct element { int pole1; char pole2; double pole3; }el_nowy; el_nowy** losowanie(int N) // pobiera jako argument liczbe N struktur, ktore maja...
Eh. To smutne. Myślałem, że w C da się wszystko :). Moim zadaniem jest napisać program do transpozycji macierzy z wstawką asemblerowską. Chciałem zrobić dynamicznie stworzoną tablice (malloc) po podaniu wymiarów macierzy. Następnie napisać funkcję drukującą macierz (działającą na trzech argumentach - wskaźnik do tablicy, x i y). Teraz widzę jednak,...
błąd jaki zauważyłem to definicja "main" powinna być z dwoma argumentami, czyli "int main(int argc, char*argv[])". Wynika to z faktu, że biblioteka SDL2 podmieni ją na swoją. Dokładniej to SDL definiuje makro "main" jako "SDL_main" i jest to typ funkcyjny dwuargumentowy "int(*)(int,char**)". goto? Niektórzy tego nie lubią i uważają za zło. Jeżeli to...
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<stdio.h> #include<stdlib.h> int **funkcja(int n); int main(void){ int n =5,i,j; int **tablica; tablica=funkcja(n);...
Projektowo funkcje należy rozdzielić. SprawdzWszystkieRejestry i SprawdzJedenRejestr() Można podać jako numer, jako maska bitowa czy jeszcze kilka by wymyślił. Chyba w samym pomyśle jest bład. Jeśli chcesz wykryć zmianę (bo tak sie domyślam) na jednym rejestrze (na niektórych rejestrach) to koncepcja CRC nie jest adekwatna do tego. To jest do wykrywania...
Witam! Na początek: Już masz błąd w deklaracjach i definicjach. W języku C przy definiowaniu tablic o n elementach (arr[n]), ilość elementów (tu: n) musi być stałą bądź wyrażeniem stałym, a nie zmienną. Prawidłowo powinno być np tak: [syntax=c]#define MAX_ILOSC_ELEM_W_TABLICY 100 int main(void) { int N; int a[MAX_ILOSC_ELEM_W_TABLICY]; int p; // zmienna...
Struktura może być Ok, jezeli: 1. Po stworzeniu obiektu dynamicznie przydzieli pamięć do conajmniej 1 indeksu tablic struktury. (slowka.slowo[0] = (*char)malloc(100)) 2. Podczas przetwarzania w scanf wykorzysta odpowiedni indeks tablicy w głównym obiekcie i odniesie się do rzeczywicie istniejącego miejsca w pamięci. Podstawowy błąd to złe wcięcia i...
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 dobrze to zrobiłem i ewentualnie pokazał mi błąd. #include...
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 alokacji pamięci na tę tablicę i pętli wstępnej do...
1. czytasz słowo z wejścia 2. szukasz słowa w drzewie 2a. znalazłeś -> zwiększasz pole liczbawystapien 2b. nie znalazłeś -> - tworzysz nowy węzeł (malloc) - tworzysz nową kopię słowa: alokujesz pamięć (malloc) i kopiujesz (strncpy) - przypisujesz liczbawystapien = 1 - wstawiasz właśnie utworzony węzeł do drzewa, przypisując go odpowiednio do wskaźnika...
Mój program służy do tworzenia macierzy i następnie robieniu na nich różnych operacji matematycznych. Na razie tylko dodaje do siebie macierze. W końcu przypomniałem sobie że muszę uwolnić pamięć na końcu programu... Lecz tu nie mam wskaźnika tylko pierw mam tablice wskaźników... więc usuwam wszystko wg schematu: http://obrazki.elektroda.pl/5125667900_1...
Witam mam taki kod: #include <stdio.h> #include <stdlib.h> int main() { int rozmiar; int **tab; int k,i,j; printf ("podaj rozmiar tablicy: \n"); scanf ("%d", &rozmiar); tab = (int**)malloc(rozmiar * sizeof (int*)); for (k=0; k<rozmiar; k++) {...
Ja np. myślę, że brakuje Ci podstaw języka C :) Deklaracja: volatile uint8_t *eq = 0; deklaruje wskaźnik , któremu przypisujesz adres zero. Jeśli odwołasz się do eq[0], to odwołujesz się komórki pamięci pod adresem 0. Druga rzecz - zwracasz z funkcji wskaźnik - nawet gdybyś tą tablicę zadeklarował poprawnie, to w jaki sposób zapewnisz, że nie zostanie...
W zasadzie w tym miejscu powinno być ok, ale z RAMem możesz być na styk. Zobacz, obiekt typu network zajmuje (nie chciało mi sie liczyc dokładnie) ponad 256 bajtow! Stałe napisowe użyte w ten sposób też zużywaja RAM. Dodatkowo używasz pewnie ponad 70 bajtów pamięci dynamicznej na nazwę/stany na węzeł. Docelowo, na 15 węzłów, pamięci masz tak 2-3 razy...
W funkcji f Nie mam pojęcia po co ta zmienna statyczna. Wystarczy inkrementować zmienną globalną. Chyba, że jako zabezpieczenie żeby nie zmieniać zmiennej globalnej, ale i to średnio skuteczne. Można też przekazać dodatkowy parametr, wskaźnik do zmiennej, która będzie przechowywać ilość wykonań funkcji. przy zakresie a=6 b=10 wychodzi 257 wywołań funkcji,...
po co ci struktura w ktorej jest TYLKO INT?! Czy ty znasz zastosowanie struktur? Po co przepisujesz stałą tablicę intów do dynamicznej tablicy intów (bo w efekcie wlasnie to osiągasz alokując na stercie miejsce na te swoje struktury)... 1. Nieeleganckie otagowanie struktury - Dlaczego typ u ciebie nazywa się tak samo jak tag?... eleganckim rozwiazaniem...
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...
zastanawiałem się też czy za malloc-iem nie powinno byc 9*9 ? Niby dlaczego? Deklarujesz wskaźnik na wskaźnik, pzrydzielasz tablicę z dziewięciu wskaźników i do każdego z tych wskaźników przypisujesz tablicę dziewięcioelementową, prawda? a i poproszę również o wywołanie funkcji Jak parę postów wyżej, najlepiej podając również rozmiary: i co oznacza...
W temacie masz C# a pytasz o C. Poniżej masz przykład tworzenia "dynamicznej tablicy" dwuwymiarowej. Spróbuj się oprzeć na tym i użyć u siebie. [syntax=cpp]#include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) { int x = 4; int y = 5; int **tab = malloc(x * sizeof(int *)); for (int i = 0; i < x; ++i) { tab[i] = malloc(y...
Witam tworzę tablicę dynamiczna 1 wymiarową a później wywołuje funkcje która mi zwraca k. inkrementuję k-ty element tablicy rozkład. chcę teraz wyświetlić zawartość tablicy rozkład i qpa.... wywala multum 0 i wyskakuje błąd windows... co jest nie tak? init(n, E, &total); int *rozklad; rozklad=(int *) malloc(total *sizeof(int));...
Nie dziw się, printf i malloc właśnie tyle zajmują [; Z tego właśnie powodu mam swojego printfa, który obsługuje tylko kilka najpotrzebniejszych specyfikatorów. Nie wiem czy zajmuje choć 500B <: ______________ Zauważyłem właśnie to: char buffer[1000]; Uwierz - to nie jest dobry pomysł, chyba że w ustawieniach w skrypcie linkera dałeś na stos główny...
Witam. Rozkminiam sobie C i próbowałem dynamicznie zaalokować dwuwymiarową tablicę o rozmiarze 6*n. Dla n=1 jest ok, dla większych wartości - zwraca segmentation fault. Program ma ją wczytać i wypisać. Sprawdźcie: [syntax=c]#include<stdio.h> #include<stdlib.h> int main(void) { int n,i,j; scanf("%d",&n); int **tab = malloc(6 * sizeof...
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 typu malloc - używanie ich jest w c++ możliwe, ale niepotrzebnie...
tak czy siak musisz zadeklarowac miejsce dla tego bufora - statycznie tablica, lub dynamicznie - malloc(). zalozmy ze statycznie: na poczatku deklaracja: char bufor[5]; char *buf_in,*buf_out; potem setup: buf_in=bufor; buf_out=bufor; teraz sprawe mozna rozwiazac dwojako, zwykle tworzy sie dedykowane funkcje zapisu i odczytu do bufora: void FIFO_write(char...
oto prosta zmiana ze statycznej tablicy na te tworzona dynamicznie. #define SIZE 100 int main() { int i, data[SIZE] = { 0 }; // fill for(i = 0; i < SIZE; i++) printf("[%d] = %d\n", i, data[i]); } #define SIZE 100 int main() { int i, *data = NULL; data = (int*)malloc(SIZE...
Robisz błąd w definicji wskaźnika. Deklarujesz: char* tablica [30][16]; Zamawiasz sobie obszar w pamięci, o wielkości 30*16 * (rozmiar wskaźnika do znaku) w którym przechowujesz wskaźniki do znaków. Gdybyś alokował go dynamicznie byłoby: char * tablica = (char *)malloc( 30*16 * sizeof(char *) ); więc całkiem błędnie uważasz, że masz...
Witam! Ostatnio opanowywałem przerwania i komunikacje między nimi. Wszystko fajnie działa :) Teraz chciałem się nauczyć jak tworzyć dynamiczne tablice pod FreeRtosem. Próbował może ktoś tego i mógłby się podzielić? Ja tylko wiem że jest taka funkcja: void *pvPortMalloc( size_t xWantedSize ) ale czy mam jej urzywać tak jak funkcje malloc? Czy...
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. Napisałem coś takiego: #include <stdio.h> #include...
no wiec napisalem ze blad to iz musi byc wartosc const dla tablicy ( dla nie wtajemniczonych chodzi glownie o tablice imie ) Byc moze musi byc const ale wydaje mi sie ze blad jest gdzie indziej.Sprobuj skastowac na const. size pewnie bedzie int skoto wskaznik jest int Pewnie nie bo powinno byc typu int** a po co mi od razu klasy? Albo uzywasz C++ ze...
Nie bez powodu robię to tak dziwnie i dookoła. Tworzę dynamicznie kilka tablic kazda o różnej długości i zawierajaca zmienne różnego typu. No i do którejś z tych tablic na któreś miejsce muszę wsadzić wartość z przetwornika ADC. Problem w tym, że jaki to ma być typ i na którym miejscu ta wartość ma być to dopiero podczas działania programu będzie określone....
Tak na marginesie: [syntax=cpp] for(i=0;i<Width;i++); free(field[i]); free(field);[/syntax] Coś mi nie pasuje w zwalnianiu... Czyżbyś zwalniał N-ty element field, gdzie N to ilość wszystkich elementów? Nie wydaje Ci się, że ta pętla jest troszkę... Jałowa? No i w C++ używasz malloc? Jakiś konkretny powód? ;) sizeof(char) zawsze zwróci jeden, więc...
Dziękuję wszytkim za odpowiedzi! Tak nie zagłębiając się za bardzo w kod, skąd jest malloc/free? .... malloc i free pochodzą z bleeding-edge-toolchain od Frediego tak jak syscalls i szablon projektu. ... Tutaj, zadeklarowałbym statycznie tablicę elementów "node" raz "list_element_t" o rozmiarze 512 i z nich pobierał te które są aktywne. A może cricular-buffer,...
Problem jest tego rodzaju, że po pierwsze trzeba czytać ze zrozumieniem treść zadania, ale co gorsza, trzeba też umieć zdefiniować treść zadania tak, aby była zrozumiała i jednoznaczna. Z tym drugim jest poważny problem. 1. Po pierwsze liczby a i b raczej nie mają nic wspólnego z wymiarami tablicy, ani też nie powinny się w niej znaleźć. Być może intencją...
Ja mam podobny programik,ale on szczytuje caly text z danego pliku. Program czyta litere po literce i sprawdza czy juz koniec i odrazu wrzuca do tablicy. A na sam koniec wyswietla cala zawartosc tablicy. Mozesz sprobowac cos pozmieniac (dodac IF'y itp.) i moze bedzie dzialac tylko na liczby. Kombinuj... #include <stdio.h> #include <conio.h>...
Ja wiem i umiem robic alokacje pamieci. Chodzi mi tylko o stos. Mam taki kod i 4KB wolnego stosu: int a; int b; // tutaj jeszcze ok { char tablica[10000]; // tutaj chcemy wziasc wiecej ze stosu niz mamy ... } i sie program wykrzacza :/ Mi chodzi tylko o to, czy istnieje jakis elegancki sposob zapobiegania tego typu sytuacji. Wiem ze...
Mam pewien problem, mam funkcję która dynamicznie pobiera macierz z klawiatury i wyświetla ją na ekranie. Chciałbym jednak to rozbić na dwie funkcje jednak nie bardzo wiem jak. Kod mojej funkcji wygląda tak: int podajMacierz() { /* tworzy macierz AxB */ int i,j,A,B; int **macierz; printf("Podaj liczbe kolumn:"); scanf("%d",&A);...
(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 funkcje dynamicznej alokacji pamęci (w standardzie C jest...
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/C/Data-... void quickSort(char *items, int left,...
Funkcje te są w nagłówku <avr/pgmspace.h>: http://www.tuxgraphics.org/common/src2/a... 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,...
Nie wklejaj kodu w obrazkach, bo nie da się go skopiować, a nikomu się nie będzie chciało przepisywać... Wystarczą znaczniki code. Już Ci napisał kaktus_c++ , że nie możesz zwracać wskaźnika na zmienną lokalną (umieszczoną na stosie), bo po zakończeniu wykonywania funkcji pamięć poprzednio przydzielona dla zmiennej może (i będzie) wykorzystana na coś...
Witam. Muszę napisać program przetwarzający obrazy pgm. W programie obraz ma być przechowywany w dynamicznej tablicy. Wszystko szło obrze do momentu gdy w funkcji progowanie muszę zmniejszyć wymiary obrazu oraz wart piksela zależy od dwóch sąsiednich pikseli. Problem pojawia sie w tym fragmencie. *wymyy-1 powoduje pojawienie się ukośnych lini a tab...
Bez sensu... totalne skomplikowanie problemu. Jak zrobimy tablice (tworząc dynamicznie, pamięci starczy nam nawet na miliardy komórek ;)) dostęp do elementów mamy natychmiastowy, podając po prostu indeksy. A w tym co kolega wyżej zaproponował, to nie dość że marnotrawienie miejsca (bierzemy najgorszy przypadek, czyli że będą prawie same jedynki) bo...
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 wierzysz to spobi eto skompiluj i zerknij na skompilowany...
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 zamknięcie programu zwracające błąd. Stawiam...
Miałem na myśli, żebyś zamienił deklarację volatile uint8_t tablica_jpeg W zasadzie nie muszę tego zmieniać. Wskaźnik już ma. Po prostu muszę go wykorzystać. I wywalić tą tablicę. Wcześnie wskaźnik nakierowywałem na tą tablicę. Zupełnie zapomniałem że ta funkcja i tak zmienia ten wskaźnik. Najdziwniejsze dla mnie jest to, że niezależnie od tego co...
Cześć. Jak w temacie mam problem z przekazaniem wskaźnika do tablicy dwuwymiarowej. Najchętniej zrobiłbym tablice dynamiczną calloc'kiem (od razu by mi ją wyzerował), ale niestety gcc (code::blocks + mingw) ciągle wywala mi błąd związany z tą nieszczęsna tablicą. Pomożecie mi? Dodano po 1 Ok. Sam się domyśliłem co nie tak z kodem. Wygląda na to, że...
Witam mam taki problem muszę wczytać z pliku binarnego jego zawartość do tablicy dynamicznej. Plik jest uprzednio wypełniany losowymi liczbami. W tablicy wyświetla mi się poprawnie tylko pierwsza liczba która jest ostatnią w pliku. Trochę już nad tym siedzę próbowałem wielu opcji i naprawdę jestem już zielony. [syntax=c]#include <stdio.h> #include...
malloc tablica tablica dynamiczny malloc tablica dynamiczna
pracuje silnik wyjęciu kluczyka peugeot pompa magnum pralki hoover
Dacia Sandero od którego rocznika warto kupić, najlepsze silniki 1.0 TCe, 1.0 ECO-G, spalanie Samsung NP550XDA-K01BR ALLROUND3 specs, upgrade options, BIOS, and performance issues