Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
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


L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
Steam Machine: addio al 4K 60 fps. Valve...
Cosa aumenterà di prezzo dopo com...
Altro che 2028: Micron ha blindato prezz...
Come la tecnologia FWA connette i piccol...
Diesel Euro 5, scatta il divieto in quat...
Prime Day, HillMiles scende a 599€ e re...
OpenAI valuta di rinviare l'Ipo al 2027:...
Streaming e Pay TV: ogni famiglia italia...
Volkswagen, Blume prepara maxi-taglio da...
Trenitalia, attacco hacker: esposti alcu...
Adblock for YouTube, 11 milioni di insta...
Assassin's Creed Black Flag Resynced pot...
Gli USA dicono no a Polestar, sì a Volvo...
Steam Machine dovrebbe costare 700 dolla...
Microsoft 365, l'Antitrust apre un'istru...
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: 20:06.


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