Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Samsung rinnova la serie pieghevole di punta con Galaxy Z Fold8 Ultra: pannello interno da 8 pollici quasi senza piega, cerniera Flex Titanium, Snapdragon 8 Elite Gen 5 for Galaxy e batteria finalmente da 5.000 mAh. Prezzo italiano da 2.299 a 2.899 euro. Tra colorimetro, benchmark reali e giorni di uso quotidiano, ecco dove questo pieghevole convince e dove il nome Ultra fatica ancora a trovare piena giustificazione
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
La nuova Insta360 X6 introduce sensori Sony da 1/1.1" e un SoC Triple AI a 4nm. Analizziamo le riprese 8K, il primo Dolby Vision nativo a 10-bit nel settore sferico e l'innovativo flusso di lavoro diretto sulla futura versione 22 di DaVinci Resolve.
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Dopo due settimane trascorse al volante della Dacia Spring 2026 possiamo raccontarvi tutto, dalle novità di motore e batteria, fino ai consumi in tutti le situazioni, compresa l'autonomia reale ad alta velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-01-2007, 21:40   #1
fsdfdsddijsdfsdfo
Registered User
 
Iscritto dal: Sep 2002
Messaggi: 1025
[c] aiuto banale calloc

ecco il sorgente

Codice:
#include <stdio.h>
#include <stdlib.h>

int *p;

void next (int *p, int i)
{
	
	p=calloc(i+1, sizeof(int));
	p[i]=i; 
	 
}

int main() 
{
	int i;

	

	for (i=0; i<10; i++) next(p, i);

	for (i=0; i<10; i++) printf("%3d", p[i]);

	printf("\n");

return 0;
}

vorrei scrivere un programma che metta 100 numeri successivi partendo da 0 in un vettore p e poi li stampi.

Ma vorrei che a ogni ripetizione allunghi il vettore di 1.

Come faccio? il codice cosi va in core dump. Grazie.

Mi spieghereste poi in pratica la differenza fra malloc e calloc?
fsdfdsddijsdfsdfo è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2007, 22:33   #2
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
prova a castare la calloc al tipo che ti interessa
Codice:
p=(int*)calloc(i+1, sizeof(int));
perchè altrimenti calloc torna il puntatore ad un char.
malloc alloca un solo blocco alla volta della dimensione voluta.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2007, 22:58   #3
fsdfdsddijsdfsdfo
Registered User
 
Iscritto dal: Sep 2002
Messaggi: 1025
ragazzi siete stati gentilissimi e chiarissimi... però il codice ancora non riesco a metterlo a posto

Codice:
#include <stdio.h>
#include <stdlib.h>

int p[1];

void next (int *p, int i)
{
	
	p=(int*)realloc(p, sizeof(int));
	p[i]=i; 

	
}

int main() 
{
	int i;

	

	for (i=0; i<10; i++) next(p, i);

	for (i=0; i<10; i++) printf("%3d", p[i]);

	printf("\n");

return 0;
}
mi da:
Codice:
*** glibc detected *** ./a.out: realloc(): invalid pointer: 0x08049654 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__libc_realloc+0x31c)[0xb7e1aefc]
/lib/tls/i686/cmov/libc.so.6[0xb7e1b041]
/lib/tls/i686/cmov/libc.so.6(__libc_realloc+0x3c)[0xb7e1ac1c]
./a.out[0x80483dd]
./a.out[0x804841f]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xdc)[0xb7dc78cc]
./a.out[0x8048341]
======= Memory map: ========
08048000-08049000 r-xp 00000000 03:01 3443577    /home/lucrezia/lab/a.out
08049000-0804a000 rw-p 00000000 03:01 3443577    /home/lucrezia/lab/a.out
0804a000-0806b000 rw-p 0804a000 00:00 0          [heap]
b7da6000-b7db0000 r-xp 00000000 03:01 538576     /lib/libgcc_s.so.1
b7db0000-b7db1000 rw-p 00009000 03:01 538576     /lib/libgcc_s.so.1
b7db1000-b7db2000 rw-p b7db1000 00:00 0 
b7db2000-b7edf000 r-xp 00000000 03:01 538584     /lib/tls/i686/cmov/libc-2.4.so
b7edf000-b7ee1000 r--p 0012c000 03:01 538584     /lib/tls/i686/cmov/libc-2.4.so
b7ee1000-b7ee3000 rw-p 0012e000 03:01 538584     /lib/tls/i686/cmov/libc-2.4.so
b7ee3000-b7ee7000 rw-p b7ee3000 00:00 0 
b7ef3000-b7ef4000 rw-p b7ef3000 00:00 0 
b7ef4000-b7f0d000 r-xp 00000000 03:01 540056     /lib/ld-2.4.so
b7f0d000-b7f0f000 rw-p 00018000 03:01 540056     /lib/ld-2.4.so
bf847000-bf85d000 rw-p bf847000 00:00 0          [stack]
ffffe000-fffff000 ---p 00000000 00:00 0          [vdso]
Aborted (core dumped)
fsdfdsddijsdfsdfo è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2007, 08:50   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da dijo
ragazzi siete stati gentilissimi e chiarissimi... però il codice ancora non riesco a metterlo a posto
Ci sono alcune cose che non vanno:

a) Alla realloc tu passi la variabile locale 'p' (l'argomento della funzione) che come valore è l'indirizzo dell'array 'p' globale. Nota bene: alla realloc puoi solo passare o un puntatore NULL (nel qual caso si comporta come una malloc) oppure un qualunque altro valore che però deve essere stato ottenuto da una precedente malloc/calloc/realloc. Non puoi qundi passare alla realloc un qualunque puntatore di una generica variabile!!

b) Nella funzione next() il valore restituito dalla realloc lo assegni a 'p' ma quel 'p' è la variabile locale (l'argomento), non il 'p' globale. Pertanto la tua allocazione non serve a nulla .... in pratica si perde quando la funzione termina.

Spiega bene e meglio cosa vuoi fare, perché così come è il tuo programma non funziona e comunque ha poco senso.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2007, 09:57   #5
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Ci sono due errori seri:
- non puoi eseguire realloc su un puntatore statico!
- il parametro int *p modificato dalla funzione next viene perso all'uscita della funzione!

Codice:
int p = NULL;

int *next (int *p, int i)
{
        
        p = realloc(p, sizeof(int)*(i+1));
        p[i] = i; 
        return p;
}

...
        for (i=0; i<10; i++)
               p = next(p, i);
Per curiosità, perché vuoi scrivere un codice così poco efficiente?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12

Ultima modifica di ilsensine : 01-02-2007 alle 09:59.
ilsensine è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli Due settimane con Dacia Spring 2026: novit&agrav...
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre AORUS GeForce RTX 5080 INFINITY WOOD 16G: una sc...
Hyundai Ioniq 9: dopo due settimane di test non avremmo voluto restituirla Hyundai Ioniq 9: dopo due settimane di test non ...
165 società pubblicitarie fra Rus...
GIMP manda XCF in secondo piano: dopo 29...
Lexar NQ790 da 1 TB e 2 TB in offerta: i...
Anche Tesla Model Y Premium guadagna il ...
Google sta ostacolando l'installazione d...
Monitor gaming 4K 160Hz a 189,99€: quest...
Il watermark visibile di Google diventa ...
Mini PC in offerta su Amazon: 5 configur...
Ferrari Luce da record: la Chassis 0 ven...
Linux 7.2 è puntuale, ma Torvalds...
Meta brevetta occhiali che a cena ti chi...
Apple Pencil Pro scende a 109€ e version...
iPhone 17 Pro Max 512 GB: il top di gamm...
l modello di Apple Intelligence per la C...
SpaceX chiude l'acquisizione di Cursor: ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:36.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v