Erreurs, bugs, questions - page 1648

 
Комбинатор:
N'est-ce pas ainsi que fonctionne le 0 actuel ?

En général, il y a beaucoup de confusion ici, nous ne pouvons pas connaître la taille réelle de la mémoire allouée pour le tableau pour la vérifier et l'optimiser.

 
Ou disons le cas suivant : D'abord ArrayResize(arr, 10, 100) ; Puis ArrayCopy(arr, arr2, 0, 0, 20) ; La taille de la mémoire réservée au tableau sera-t-elle réduite ?
 
Alexey Navoykov:

Si je me souviens bien de l'explication, la taille de la réserve ne diminuera pas même si on lui donne explicitement un nombre plus petit.

Faux. D'après l'exemple de l'aide, 0 fonctionne effectivement comme 0 et la suggestion de -1 est très logique.

 
Au fait, mon raisonnement sur reserve_size n'est pas tout à fait correct. En fait, c'est juste une étape du changement de réserve, mais pas la réserve elle-même. C'est-à-dire qu'elle n'est probablement pas stockée quelque part. Mais la taille totale de la mémoire allouée est connue. Nous aimerions la connaître d'une manière ou d'une autre, et idéalement la gérer directement.

Et je reformulerai ma suggestion concernant ArrayResize comme suit : en spécifiant reserve_size=-1, la fonction ne doit pas modifier la taille de la mémoire allouée au tableau si le paramètre size se situe dans cette fourchette. Si size > capacity, le tampon s'agrandira bien sûr.
 
Le tableau ("inside") enregistre le nombre d'éléments alloués au tableau.

La logique de travail avec les attributions (code conditionnel) :
ArrayResize(arr,int size,int reserve)
  {
   if(arr.allocated<size)
      if(!ArrayAllocateMemory(arr,size+reserve))  // -> arr.allocated=size+reserve;
         return(-1);
   //---
   CallConstructorsOrDestructors(arr,size);
   //---
   arr.size=size;
   return(size);
  }
 
Ilyas:
Le tableau ("inside") enregistre le nombre d'éléments alloués au tableau.

La logique du travail avec les attributions (code conditionnel) :

Je vois, merci. Et au début, cette allocation est égale à -1, ou pas ? C'est-à-dire qu'au premier appel de ArrayResize(arr, 0, 100) l'allocation sera ?

 
Alexey Navoykov:

Cette allocation au début est-elle égale à -1, ou pas ?

Egale à 0
Alexey Navoykov:

Par exemple, lorsque ArrayResize(arr, 0, 100) est appelé initialement, l'allocation se produira-t-elle ?

L'allocation ne se fait que si la taille du tableau change à la hausse. Dans ce cas, la taille du tableau ne change pas, car elle était égale à 0.

 
FVitalii Ananev:
La différence est que dans le premier cas, il n'y a pas d'erreur :)
Et pourquoi n'y a-t-il pas d'erreur dans C2C++ dans les deux cas ? (Voir ci-dessus pour la réponse à la question de savoir ce que C2C++ a à voir avec cela)
 
Comment supprimer une URL de la liste de confiance ? Le texte d'aide indique :"Pour supprimer une adresse de la liste de confiance, sélectionnez-la et appuyez sur le bouton "Supprimer"", mais ce bouton n'existe pas.
 
Sergei Vladimirov:
Comment supprimer une URL de la liste de confiance ? Le service d'assistance téléphonique indique :"Pour supprimer une adresse de la liste de confiance, sélectionnez-la et appuyez sur le bouton "Supprimer"", mais ce bouton n'existe pas.
Sur le clavier.