Faits : A. Par jugement du 23 août 2018, le Tribunal de police de la République et canton de Genève a condamné X._, pour séjour illégal et infractions aux art. 19 al. 1 et 19a ch. 1 LStup, à une peine privative de liberté de trois mois ainsi qu'à une amende de 300 francs. B. Par arrêt du 18 janvier 2019, la Chambre pénale d'appel et de révision de la Cour de justice genevoise, statuant sur l'appel du ministère public et sur l'appel joint formé par X._ contre ce jugement, a réformé celui-ci en ce sens que l'expulsion du prénommé du territoire suisse est ordonnée pour une durée de huit ans et que l'Etat de Genève doit lui payer la somme de 2'380 fr. à titre d'indemnité pour la réparation de son tort moral. Elle a confirmé le jugement pour le surplus. La cour cantonale a retenu les faits suivants. B.a. X._, ressortissant algérien, est né en 1977 à A._. Il est célibataire et sans enfant. Selon ses dires, il aurait vécu en Algérie jusqu'à l'âge de 17 ans et y aurait été scolarisé jusqu'à l'âge de 16 ans. Il aurait appris le métier de mécanicien "sur le tas". A 17 ans, il serait parti à B._, puis aurait gagné C._ en 1995. Se trouvant en Suisse depuis lors, le prénommé ne travaille pas depuis des années, sauf parfois auprès d'une association genevoise de réduction des risques liés aux drogues. Avant son interpellation, il dormait dans un abri de protection civile. En détention, il n'a pas reçu de traitement pour l'hépatite C dont il souffre, mais se trouvait toujours sous méthadone et Rivotril. Dans le cadre de la présente cause, X._ a été détenu du 10 juin au 10 octobre 2018. Selon l'extrait de son casier judiciaire, le prénommé a été condamné à 28 reprises entre 2008 et 2018, essentiellement pour des infractions contre le patrimoine - en particulier à une reprise pour brigandage -, contre l'intégrité corporelle et contre la LStup, dont une fois pour crime contre cette loi. Les condamnations les plus récentes ont été prononcées, deux fois en 2016 pour séjour illégal et non-respect d'une assignation à un lieu de résidence ou d'une interdiction de pénétrer dans une région déterminée, en 2017 pour infraction à la LStup, dommages à la propriété, violation de domicile et vol, la même année pour vol, dommages à la propriété et violation de domicile, ainsi que, toujours en 2017 puis en 2018, pour séjour illégal. B.b. Du 14 février au 24 mars 2018, puis du 24 mai au 10 juin 2018, X._ a persisté à séjourner en Suisse alors qu'il faisait l'objet d'une interdiction d'entrée sur le territoire valable jusqu'au 16 novembre 2018. Le 10 juin 2018, il a remis à une toxicomane 1 g brut d'héroïne, contre une somme de 9 francs. L'intéressé a en outre détenu 0,5 g brut de cette substance. Du 14 février au 24 mars 2018, X._ a régulièrement consommé de l'héroïne, à raison d'une dose par week-end. C. X._ forme un recours en matière pénale au Tribunal fédéral contre l'arrêt du 18 janvier 2019, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens que son expulsion du territoire suisse n'est pas ordonnée et qu'une indemnité de 6'800 fr. lui est allouée à titre de réparation du tort moral. Subsidiairement, il conclut à sa réforme en ce sens que son expulsion du territoire suisse est ordonnée pour une durée de trois ans et qu'une indemnité de 6'800 fr. lui est allouée à titre de réparation du tort moral. Il sollicite par ailleurs le bénéfice de l'assistance judiciaire et l'octroi de l'effet suspensif. Par courrier du 19 février 2019, le Président de la Cour de droit pénal du Tribunal fédéral a indiqué que le recours en matière pénale interjeté contre un prononcé d'expulsion déployait de lege un effet suspensif, de sorte que la demande d'effet suspensif était sans objet et qu'il n'y avait dès lors pas lieu de statuer sur celle-ci.