Gambas France BETA


Pas de compte ? Incription

max length on 32 or 64 bits

Ce sujet est résolu.

1
AuteurMessages
archi12#1 Posté le 29/10/2015 à 16:22:28
bonjour,
1 - est-ce que la valeur max pour un integer, un float, est la meme que la machine soit en 32 bits ou en 64 bits ?
2 - quelle est la longueur max d'un string ? dans les 2 cas ?
3 - où pourrais-je trouver ces infos ?
(version 3.8.90 sur mint 17.2)
merci pour votre aide
Reivillo#2 Posté le 29/10/2015 à 16:31:57
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Bonsoir archi12.

3 - où pourrais-je trouver ces infos ?

Documentation Gambas3 FR

Reivillo.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
archi12#3 Posté le 29/10/2015 à 16:50:05
merci Reivillo pour cette reponse rapide.
mais en posant ces questions, j'ai oublié de dire que j'avais déja cherché et recherché dans la documentation que vous indiquez. Sans rien trouver.
Pourriez-vous m'indiquer où chercher, exactement ?
Ou me donner directement ces renseignements, si vous les possedez, ce qui me ferai gagner du temps.
Merci encore.
Flachy Joe#4 Posté le 29/10/2015 à 18:32:07
Iguane : Il Gambas Uniquement pour Activer ses NEuronesC'est vrai que la doc est un peu ardue à parcourir...

C'est par là (Index du langage > Types de données) :
http://gambaswiki.org/wiki/lang/type?l=fr

Bonne lecture.
;) Flachy Joe ;)
archi12#5 Posté le 30/10/2015 à 11:55:28
Flachy Joe
Merci pour votre aide.
J'aime bien le "un peu ardue" !
string taille en memoire 4 octets, soit 2 ^ 32 = 2.147.483.648
Apres test
buf = string(2147483607, "a")
est le maximum avant un seg fault
(le string contient des entetes)
'
par contre
buf = string(2147483607, "€")
provoque ce seg fault bien avant !
Merci encore
Flachy Joe#6 Posté le 31/10/2015 à 11:53:46
Iguane : Il Gambas Uniquement pour Activer ses NEurones"€" est un caractère unicode codé sur 2 octets, non ?
;) Flachy Joe ;)
archi12#7 Posté le 1/11/2015 à 10:56:46
Flachy Joe
oui, "€" fait plus de 1 caractere de long (UTF8)
cette limite 2147483607 est-elle due à l'instruction "string" qui n'accepte qu'un integer, ou à la taille de ma mémoire qui n'est que de 4 Go ?
comment peut-on connaitre la taille occupée par un prog pendant de son execution ?
merci
Flachy Joe#8 Posté le 1/11/2015 à 18:39:33
Iguane : Il Gambas Uniquement pour Activer ses NEuronesJe pense que la limite de la chaîne de caractère vient du fait quelle est stockée sous forme |longueur|données| la longueur étant sur 4 octets. Bizarrement la longueur semble être codée sous forme d'entier signé, puisque 2^32=4294967296 et 2147483648=2^31 mais c'est peut-être comme tu le suggère pour correspondre au type Integer.

En tout cas la taille de la mémoire disponible (16Go chez moi) ne change pas la valeur limite d'apparition de l'erreur de segmentation.

Connaissant le PID du processus, tu peux faire
grep Vm /proc/$PID/status
pour avoir des infos sur la mémoire utilisée.

Si tu as besoin d'une chaîne de plus de 2Go (possible uniquement sur un système 64bits), il va falloir que tu passes par des pointeurs, cf
http://gambaswiki.org/wiki/lang/type/pointer?l=fr
http://gambaswiki.org/wiki/lang/alloc?l=fr
http://gambaswiki.org/wiki/cat/externfunc?l=fr
;) Flachy Joe ;)
archi12#9 Posté le 2/11/2015 à 15:10:21
Flachy Joe
merci de votre reponse
vous qui avez 16Go, pourrais-je vous demander de tester (si vous avez le temps)
buf1 = string(2147483647,"a") ' ne doit pas provoquer d'erreur d'aucune sorte
buf2 = string(2147483647,"a") ' ne doit pas provoquer d'erreur d'aucune sorte non plus
buf3 = buf1 & buf2 ' et là ??????????
sinon utilisation des pointeurs
merci encore
Flachy Joe#10 Posté le 2/11/2015 à 18:27:08
Iguane : Il Gambas Uniquement pour Activer ses NEuronesÇa m'affiche une erreur "Mémoire pleine" mais ce n'est pas une limite de taille totale acceptée par Gambas puisque
1
2
3
4
DIM buf1 AS STRING, buf2 AS STRING, buf3 AS STRING, buf4 AS STRING
buf1 = String(2147483607, "a") ' ça marche
buf2 = String(2147483607, "a") ' ça marche
buf3 = buf1 & buf2 ' erreur "mémoire pleine" avec 4Go alloués

1
2
3
4
5
DIM buf1 AS STRING, buf2 AS STRING, buf3 AS STRING, buf4 AS STRING
buf1 = String(2147483607, "a") ' ça marche
buf2 = String(2147483607, "a") ' ça marche
buf3 = String(2147483607, "a") ' ça marche
buf4 = buf1 & buf2 ' erreur "mémoire pleine" avec 6Go alloués


Donc il y a un test sur la longueur des chaînes dans la fonction de concaténation.
;) Flachy Joe ;)
archi12#11 Posté le 3/11/2015 à 16:47:49
Flachy Joe
merci !
je pense en avoir suffisamment appris, grace à vous, pour continuer mon petit projet.
merci encore
1