Obie metody są dobre. W metodzie A definiujesz wskaźnik na tablicę obiektów typu struktura, a następnie alokujesz pamięć na 10 tego typu obiektów. I to jest metoda prostsza. Metoda B jest bardziej złożona. Nie alokujesz od razu jednej tablicy na wszystkie elementy, ale tworzysz tablicę wskaźników, z których każdy dopiero wskazuje na obiekt typu struktura,...
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...
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...
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...
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...
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ę...
Witam! Myślę, że warto tutaj skorzystać z wskaźników do tablic i utworzyć tablicę tychże wskaźników np: TYP *(*t)[] i odwoływać się do tak zdefiniowanej poprzez: (*t)[wiersz][kolumna] [syntax=c]typedef float TYP; /* w miejsce TYP wstawiamy dowolny typ */ /* i definiujemy funkcję */ TYP *(*alokuj(int iletablic))[] { int i; TYP *(*p)[]; p = malloc(sizeof...
Po pierwsze tablica = (el_nowy **)malloc(sizeof(el_nowy*)*N);//alokujes... wskaźniki po drugie malloc zwalniasz przez free. W C++ lepiej używać new i delete. Po trzecie sortowanie nie działa.
Co robie źle ?? Wszystko. Alokujesz pamięć (2 bloki po 4 bajty), po czym gubisz otrzymane wskaźniki (wyciek pamięci) nadpisując je wartością z zewnątrz i wskaźnikiem do zmiennej lokalnej, który przestaje być ważny po wyjściu z funkcji. Do kopiowania stringów możesz w tym przypadku użyć funkcji strdup() z nagłówka <string.h> - zastąpi strlen(),...
Z czym masz problem? Do tworzenia dynamicznych tablic w C masz malloc.
hmmm.... ja przy pomocy funkcji malloc() robiłem tablice 2MB (512x512x8 bajtów) pod VC++ i nie było żadnych problemów.
Tylko dziwi mnie że kompilator wie o tej tablicy jeszcze zanim sprawdzi jakie argumenty zawiera itoa(). Ale skoro mówisz że tak jest, to nie będe się kłocił. Do tej pory myślałem, że literał powstanie w momencie napotkania go przez kompilator w parametrach funkcji, tymczasem dzieje się to wcześniej. No ale jak literał znajduje sie gdzieś w main "luzem",...
Zapewne chodzi o to: [syntax=c] tablica.studenci[tablica.aktualny].imie = (char *)malloc(strlen(i) + 1); tablica.studenci[tablica.aktualny].nazwi... = (char *)malloc(strlen(n) + 1); [/syntax] Dodaj rzutowanie na "char *"
Rozwinięcie myśli Paulo93: Załóżmy, że masz już utworzoną funkcją malloc(), pierwszą tablicę n-elementową oraz wskaźnik wskazujący zerowy element tej tablicy (czyli jej początek). Tworzysz, np. funkcją malloc(), nową, drugą tablicę (n - 1)-elementową (jej długość będzie o 1 mniejsza, niż pierwszej tablicy, bo chcesz z pierwszej tablicy usunąć jeden...
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...
Definiuję tablicę jako wskaźnik na wskaźniki, bo będzie dwuwymiarowa. Potem w zagnieżdżonej pętli przydzielam na poszczególne elementy tablicy pamięć i wpisuję wartości. Wychodzę z pętli. Chcę się móc odwołać do elementów tej tablicy w dalszej części main, a one nie są pamiętane. Tak przydzielam pamięć na tablicę: [syntax=cpp] wsk=head; i=0; j=0; array=malloc(sizeof(t));...
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).
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...
h-doc: jeżeli yy jest równe np. 10, to ile pamięci przydzieli malloc?
struct Punkt *punkty=malloc(ile*sizeof(struct Punkt));
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
Między innymi dla tego że nowy wpis dodawałeś do oryginalnej tablicy, zapisując go poza zaalokowanym obszarem.
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 ->...
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...
Bo wogóle pierwszy malloc nie może brać rozmiaru 6*sizeof(int) ale 6*sizeof(struct bazadanych *)
Witam. Pytanie jak w temacie. Potrzebuje "podziałać" na dużych tablicach tworzonych dynamicznie i pózniej usuwanych. Czy jest jakaś znacząca różnica w oszczędzaniu pamięci i czasie realizacji operacji w wykorzystaniu instrukcji new/delete i malloc(lub jego klony)/free ?
No przecież napisałem, że się nie da. Wskaźnik nie przechowuje żadnej innej informacji poza adresem (początku) zmiennej. W związku z tym, jeżeli funkcja potrzebuje rozmiaru, to trzeba go przekazać jako dodatkowy argument. Kolejny raz już nie będę tego powtarzał. Oczywiście, można sobie wszystko opakować w pseudoobiekty w stylu typedef struct {...
Jeśli w pewnym momencie ilość będzie znana, jednocześnie niezmienna, to po prostu do malloc przekazać rozmiar jednej struktury razy ilość elementów, uzyskany wskaźnik można traktować jak tablicę: typedef struct { int jakies_pole; } sample_buffer; int main() { unsigned int i, cnt; i = 3; cnt = (rand() % 10) + 2;...
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...
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.
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...
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...
Dramat to wklejanie czyjejś roboty bez zrozumienia co się robi :D, więc na razie wziąłem ten twój skrypt linkera od F4 i walcze z nim. Zmieniłem ram, dodałem sdram i nie wiem jak zrobić stertę w sdramie. Bo - jak ja to rozumiem - malloc z dużymi tablicami potrzebuje, bym stertę miał w zewnętrznym ramie. Wrzucam Ci mój skrypt linkera. Jeśli masz chwilę...
Dla całej aplikacji. W pliku z tablicą wektorów.
Mam taki problem. Stworzyłem sobie funkcję, która w swoim ciele zawiera kilka alokacji tablic przez malloc. Sama wykonuje się dość długo, a do tego potrzeba wykonać ją kilka razy. Wobec tego wrzuciłem ją do wątku. I powstaje moje pytanie, czy każdy wątek pod Windowsem ma swoją przestrzeń adresową? Co dzieje się z zaalokowaną pamięcią po wykonaniu kodu?...
do pełni szczęścia trzeba przewidzieć w kodzie sytuację, gdy malloc nie zaalokuje pamięci pod tablicę (bo ktoś będzie liczył silnie powiedzmy 4 miliardów :) ) Czyli dodatkowo wypada sprawdzić po użyciu malloc, czy tab != NULL ... Pozdrawiam.
Racja, trochę się zamotałem. Napisałem sobie poniżej prosty program i zastanawiam się czy nie jest on trochę niebezpieczny. Za pomocą malloc tworzę tablice wskaźników do tablic a następnie zapisuję pod tymi wskaźnikami jakieś łańcuchy. Tylko że teraz nie wiem czy te łańcuchy nie zniszczą jakiś innych danych, ponieważ nie rezerwowałem dla nich miejsca...
Możesz użyć funkcji malloc :)
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...
Ciekawa ta tablica, zwłaszcza, że nie zdefiniowałeś wcześniej wartości n. Zrób lepiej tak: int* kol = NULL; /* ... poznajemy wartość n ... */ kol = malloc(n * sizeof(*kol)); /* już można używać kol, jeśli jest różne od NULL */ Pozdrawiam, Dr.Vee
Zapis zmienna[zmienna] przy definiowaniu zmiennej jest wybiegiem kompilatora, który przykrywa rzeczywistą alokację. Jak najbardziej musisz użyć new (czy tam malloc)
Chodzi mi o to, żeby za pomocą wskaźnika typu void (Ptr To będzie coś takiego. s16 * dane; void * ptr; /* tablica 5 elementowa */ dane = (s16*)malloc(sizeof(s16&... * 5); /* przypisanie do wskaźnika wartość adresu tablicy "dane" */ ptr = (void *)dane; /* przypisanie liczby do pierwszego elementu tablicy pod adresem...
Nie widzę żebyś alokował gdzieś tablicę na te struktury. Masz tam deklarację struct osoba t[]={}; Ale ona ma 0 elementów, aż dziw że to przez kompilator przeszło. Musisz po printf("Ile osob chcesz wprowadzic:"); scanf("%d",&i); zrobić malloc/new dla tablicy t[]
Otwierasz plik. Sprawdzasz jego długość w bajtach (fseek, ftell). Alokujesz pamiec (malloc, free). Wczytujesz plik do tablicy. I indeksując tablice od konca wypluwasz całą zawartość tablicy na ekran.
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...
http://pl.wikibooks.org/wiki/C/malloc tu jest wszystko opisane
Dlaczego w tym miejscu zapotrzebowanie na pamięć jest obliczane w ten sposób: Dlaczego jest sizeof(int *)?" [syntax=c]int **tab2 = (int **)malloc(rozmiar*sizeof(int *));[/syntax]
To jest C, a nie C++ Wszystko, co alokujesz przez malloc() musisz zwolnić przez free()
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);...
Przykładowo robisz taki kod: [syntax=c] int n; // liczba studentów char imie[n][100], char nazwisko[n][100]; // oczywiście tutaj musi być malloc [/syntax]
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...
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()
1. Co to za funkcja "substr4"? Pomyłka przy przepisywaniu? 2. Jak zwalniasz pamięć przydzieloną przez malloc? Jeśli zapomniałeś, to będzie kaszana. 3. "strcmp(*id_1,*id_2)" -> id_1 oraz id_2 to tablice. Odwołania do nich traktuje się jak wskaźniki do pierwszego bajtu *id_1[0], więc powinno być "strcmp(id_1,id_2)" 4. Na twoim miejscu napisałbym samodzielnie...
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...
Jak ja lubię te długie nazwy, niby pomocne a tak naprawdę cholernie mylące... No ale nic. Zobacz co masz w funkcji main(): K * kolejka; kolejka=malloc(sizeof(kolejka)); a powinno być: kolejka=malloc(sizeof(K)); No przecież sizeof(kolejka) to raptem 4 bajty (czy tam ile liczy sobie zwykły pointer, jakim jest kolejka) i gdy potem w funkcji InicjujKolejke()...
Można tego dokonać. Zassaj PDF-a z opisem avr-libc. Jest tam ładnie pokazane jak przesunąć obszary różnych typów pamięci poza granice pamięci wewnętrznej. Możesz przesunąć stertę do zewnętrznego RAM-u i przydzielić za pomocą malloc-a pamięć.
JSAMPARRAY to tablica wskaźników. Realokacja co iterację to jakieś nieporozumienie. Przepraszam, gdzie ja niby realokuję tablicę JSAMPARRAY? Jak już to tylko tablicę char* img_buffer; Czytaj uważnie. Dodano po 4 Ten kod to potworek, strasznie kłuje w oczy. Tak dla wyprostowania to ten kod jest z biblioteki jpegsrc z pliku example.c Moja część kodu...
Jest też taka "sztuczka" z alokacją tablicy na końcu struktury: struct varString { unsigned size; char string[1]; }; struct varString* alloc(unsigned size) { struct varString* vs = malloc(sizeof(struct varString + size - 1)); vs->size = size; return vs; } Może Ci się kiedyś przyda :) Pozdrawiam,...
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++
int quicksort(long rozmiar, long *tablica){ long x; long *tmp; long i,j,k; if(rozmiar<=1) return; else{ x=rozmiar/2; quicksort(x, tablica); quicksort(rozmiar-x, tablica+x); tmp=(long*)malloc(rozmiar*si... i=0; j=x; k=0; while(k<rozmiar){ if(i<x &&...
Musiałbyś sobie przejrzeć kod malloc() z którego korzystasz - zapewne newlib, to dowiesz się czemu akurat na dzień dobry chce aż tyle. Przypuszczalnie rozchodzi się o to, że malloc() z newliba ma dwojaki mechanizm alokacji - małe obszary alokuje ze specjalnej tablicy małych obszarów, duże - normalnie, poprzez listę i sbrk(). Po pierwszym wywołaniu zapewne...
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().
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...
Wydaje mi się, że to jest tak: char * znalezione[1500] jest tablicą wskaźników na typ char. W pętli while deklarujesz i używasz zmiennej: char cos[90] To do niej zapisujesz sciezke znaleznionego pliku. Wykonujesz też przypisanie: znalezione[i] = cos; Musisz mieć świadomość, że po tym przypisaniu w tablicy znalezione znajdzie...
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(...)'.
Dałoby rade tą silnie liczyć w funkcji a nie w pętli i tak wypisywać? Hę? Przecież masz w funkcji rekurencyjnej liczone ścisle wg zasad wzoru rekurencyjnego. Chciałbym w dwóch wersjach Ma być globalnie zdefiniowana tablica o stałej liczbie elementów i bez malloc. To jest jedna wersja... A tu nie masz alokacji pamięci, więc...? Gdzie problem stworzyć...
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,...
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...
Przedewszystkim zrób to inaczej... po prostu... main() { char bufor[20]; ... funkcja(bufor, ...); } funkcja(char* bufor, ...) { } I w ogóle nie ma problemu. Zmienna tmp w ogóle jest nieporozumieniem. Przecież wewnątrz funkcji możesz sobie zadeklarowac tablicę o dowolnym wymiarze... funkcja(...) { char tablica[1000]; } A pamięć możesz zwalniać gdzie...
Dodatkowym kosztem jest to, że obiekty z metodami wirtualnymi "kosztują" dodatkowe 2 bajty (1 wskaźnik) na obiekt. Jeśli chodzi o new i delete, to można je osobno implementować dla każdej klasy - czyli obiekty pewnych klas można np. alokować z tablicy statycznej zamiast malloc-owania pamięci. Nawet bez obiektów C++ bez ma inne zalety (np. template'y,...
I jeszcze jedno: szybsze jest alokowanie pamięci na stercie, a następnie zwalnianie jej czy może przechowywanie dużych tablic na stosie? Oczywiście cały czas mówię tutaj o zarezerwowaniu pamięci tylko i wyłącznie na czas działania funkcji. Dodano po 5 Właśnie z tymi statycznymi tablicami i zmiennymi też mi się za bardzo nie widziało. Ale teraz mam dylemat...
To ograniczenie jest dla 8-bitowej wersji avr-gcc i ma związek z tym, że adresy są 16-bitowe. W nowym avr-gcc wskaźniki mogą być także 24-bitowe, więc teoretycznie da się zaadresować do 16 MB, ale tylko z wykorzystaniem wskaźników. Nie wiem jak inne kompilatory na avr, ale przypuszczam, że sytuacja jest podobna. malloc też nie rozwiązuje sprawy, bo...
Mam problem. Muszę zrobić tablicę dwuwymiarową stringów, nie char-ów. Jako że w ANSI C nie ma string, robi się coś takiego: char *litery=malloc(sizeof(char)&... Moje pytanie brzmi, jak zrobić tablicę dwuwymiarową ale właśnie tych stringów? Tablicę dwuwymiarową tworzy się tak: char tablica [30][7]; Do pojedynczej komórki...
Referencja jest w C++, a nie C. Zapis "int &rnDigit" w C wywali błąd składni. Można zwrócić na dwa sposoby przez parametry (ale nie &) i przez return. Jeśli chce się większą ilość zwrócić przez return to pozostaje stworzenie struktury. Całość mogłaby wyglądać tak: int *foo(int *tablica1, int *parametr, int n) { int *tablica2 = (int...
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++) {...
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...
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....
Masz pierwszą naukę na swojej drodze. Gdzie się tylko da, to należy stosować zmienne lokalne. Spójrz co robisz: w funkcji mnożenia ustawiasz wynik[wiersz][kolumna] = 0; A przekazujesz wynik jako parametr, który to jest zerowany jako zmienna globalna. Ten kod nie nadaje się do analizy tylko do usunięcia i napisania tego "normalnie" w C przy użyciu zmiennych...
niestety... przeprowadzone testy wykazały że jedynie z 'referencją' działa w miarę poprawnie... w miarę.... int main() { long char *rozkaz; /*!!!! */ clrscr(); textcolor(4); cprintf("C:\>")... textcolor(15); scanf("%s",&rozkaz)... tu piszesz sobie po stosie! */ system("->?<-");...
Tu masz info jak posługiwać się zewnętrzną pamięcią w gcc: http://www.nongnu.org/avr-libc/user-manu... Oczywiście tablice możesz mieć, tyle, że alokowane dynamicznie czyli na stercie, albo jak piszesz dodawać do nich atrybut określający sekcję. Stertę możesz umieścić w zewnętrznej pamięci. To może być o tyle sensowne, że duże...
Tablica jest strukturą Strukturą danych, ale nie strukturą w ramach semantyki języka C. Zadeklaruj odpowiednie zmienne (musisz je unikatowo nazwać, zaznaczyłbym to na grafie, by się później nie pomylić), zaalokuj dla nich pamięć (używając malloc(), jak w poleceniu) i dokonaj odpowiednich przypisań do odpowiednich pól struktur i elementów tablic.
Można to zrobić tak: #include <stdio.h> #include <stdlib.h> struct key{ char *w; char *z; }; typedef struct key2 { char *w; char *z; } nasz_typ; const int tab_size = 100; struct key * tab; nasz_typ * tab2; int main() { tab = (struct key *) malloc(sizeof(struct key) * tab_size); tab2...
Bo kazales jej to robic - %s oznacza wczytan8ie do bufora napisu znakowego o dlugosci nie wiekszej niz rozmiar bufora - 1 jesli hcesz wczytac 3 slowa musisz zastosowac formant wycinajacy pojedyncze napisy ( poszukaj w manualu C bo nie pamietam teraz ktory to byl ) i wczytac go do trzech zmiennych np tak ( zakladajac ze poszukiwanym formantem jest m...
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...
A tutaj jest odwrotnie. To funkcja zwraca wskaźnik. A do wskaźnika tablicy nie zrobię. A to niby dlaczego działa?: #include <stdlib.h> int main() { unsigned int i = 0; int *bufor = (int *)malloc(20 * sizeof(int)); for(i = 0; i < 20; i ++){ bufor[i] = i * i; printf("%d = %d...
Utworzyłeś wektor o SIZE_Y elementach a wypełniasz SIZE_X pozycji
Tak nie zagłębiając się za bardzo w kod, skąd jest malloc/free? Jesteś pewien że to działa? Jest przydzielony obszar dla malloc poprawnie i wystarczająco duży? Taki kontroler nie ma wirtualizacji pamięci, to i uprzątanie obszaru przydzielonego dla malloc jest koszmarne. W zasadzie jeśli się chce mieć w miarę wydajność, to lepiej uciekać od malloc i...
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...
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...
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...
Witam Mam problem z odczytem z pliku plik wejściowy wygląda następująco 1 2 3 4 5 6 7 8 8 9 10 11 12 13 14 plik wyjściowy 4064048 4064048 0 0 0 0 0 0 0 Niestety powinien wyglądać podobnie ja wejściowy :| Tak wygląda kod programu - kompilator to GCC W zastosowaniu do plików tekstowych to nie jest błąd, jednak ogólnie, w takich konstrukcjach zmienna...
Wydawało mi się, że mogę to wyrzucić z funkcji main, za pomocą funkcji pictabcreator. Takie podejście jest wykonalne, ale zamiast samego wskaźnika na tablicę musiałbyś jako argument podać wskaźnik na ten wskaźnik. [syntax=c]void pictabcreator(int ***out_pictab, int szer, int wys) { int m; int ** pictab; pictab = (int**)malloc(sizeof(int*) * szer);...
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...
Magła by jakaś dobra dusza opisać co oznaczają poszczególne linijki tego kodu? /* * Sortowanie liczb (typ ustawiany wewnątrz kodu źródłowego). */ #include <stdio.h> #include <stdlib.h> typedef unsigned int TYP; #define OZNACZENIE_TYPU "u" // oznaczenie odpowiednio do printf(3) i TYPu TYP *tablica; void merge(unsigned long start, unsigned...
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...
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...
Zauważ że instrukcja [syntax=c]char * A = malloc(5);[/syntax] powoduje zalokowanie pamięci. Następnie: [syntax=c]A = "Test";[/syntax] Powoduje zgubienie wskaźnika do wcześniej zaalokowanej pamięci i ustawienie A na stałą "Test". W kolejnych instrukcjach przekazujesz wskaźnik na stałą do funkcji która ma coś pod ten wskaźnik skopiować. Dodatkowym błędem...
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...
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...
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); ... }
malloc tablica dynamiczny malloc tablica dynamiczna malloc stm32
citroen xsara paliwo scroll touchpad oszroniony agregat
domofon schemat philips senseo
Prostownik Magnum 340: 0 Amper, 15,4V Ładowanie Naprawa spryskiwaczy reflektorów Peugeot 3008 2014