Faits :
A.
Par jugement du 4 septembre 2018, le Tribunal de police de l'arrondissement de l'Est vaudois a libéré C._ AG, D._ et B._ des chefs de prévention d'homicide par négligence et de lésions corporelles par négligence. Il a donné acte à X._ de ses réserves civiles à l'encontre des trois intéressés.
B.
Par jugement du 24 janvier 2019, la Cour d'appel pénale du Tribunal cantonal du canton de Vaud a rejeté l'appel formé par X._ contre ce jugement et a confirmé celui-ci. Elle a par ailleurs mis les frais judiciaires d'appel et les indemnités de dépens allouées à C._ AG, D._ et B._ pour la procédure d'appel à la charge de X._, de même que l'indemnité due au conseil juridique gratuit de cette dernière.
Il en ressort ce qui suit.
B.a. C._ AG est une société de droit suisse fondée en 1996, dont le but social consiste dans la vente et la maintenance de produits de production de chaleur.
B.b. B._ est né en 1969. Après avoir suivi un apprentissage de monteur-électricien, il a oeuvré pour diverses entreprises. Il a été engagé par C._ AG en juin 2009 en qualité de technicien de service.
B.c. Au début de l'année 2011, X._ a fait l'acquisition d'un chalet sis à F._. Elle a mandaté son voisin, D._, en vue de l'installation d'une nouvelle chaudière. Le prénommé a alors proposé d'installer une chaudière à mazout à condensation dans un local où se trouvait précédemment un système de chauffage à bois, ce que X._ a accepté. D._ a donc commandé une telle chaudière chez C._ AG. Cet appareil a été livré le 6 juin 2011. Avec l'aide d'un ou plusieurs collaborateurs, D._ a installé cette chaudière. Il a collaboré avec B._, technicien de service auprès de C._ AG, comme il l'avait fait à quelques reprises par le passé.
B._ était alors un voisin de X._, puisqu'il louait un appartement dans le chalet de D._. Entre les 4 et 6 février 2012, à la demande de X._ ou de E._, B._ et D._ sont intervenus dans le local de chaufferie en raison d'un dysfonctionnement de la chaudière. Le 7 février 2012, la chaudière a laissé s'échapper une grande quantité de monoxyde de carbone, lequel s'est propagé jusqu'au logement de X._. Cette dernière et E._ ont alors subi une intoxication, qui a causé le décès du prénommé ainsi que de graves lésions chez X._.
L'accident a résulté de deux facteurs, soit l'obstruction de la conduite des condensats en raison du gel et le mauvais positionnement du joint du condenseur, qui a permis au monoxyde de carbone de se répandre dans le chalet.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre le jugement du 24 janvier 2019 en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens que B._ et C._ AG sont condamnés, pour lésions corporelles par négligence, à une peine laissée à dire de justice, et que tous deux sont solidairement condamnés à lui payer un montant de 65'000 francs. Subsidiairement, elle conclut à son annulation et au renvoi de la cause à l'autorité précédente pour nouvelle décision. Elle sollicite par ailleurs le bénéfice de l'assistance judiciaire.
Considérant en droit :
1.
Selon l'art. 81 al. 1 let. a et b ch. 5 LTF, la partie plaignante qui a participé à la procédure de dernière instance cantonale est habilitée à recourir au Tribunal fédéral, si la décision attaquée peut avoir des effets sur le jugement de ses prétentions civiles. Constituent des prétentions civiles celles qui sont fondées sur le droit civil et doivent en conséquence être déduites ordinairement devant les tribunaux civils. Il s'agit principalement des prétentions en réparation du dommage et du tort moral au sens des art. 41 ss CO (ATF 141 IV 1 consid. 1.1 p. 4).
En l'espèce, la recourante a pris part à la procédure de dernière instance cantonale. Dans ce cadre, elle a pris des conclusions civiles chiffrées - tendant à l'allocation d'une indemnité de 65'000 fr. à titre de réparation du tort moral - qui ne lui ont pas été accordées et qu'elle répète devant le Tribunal fédéral. L'intéressée dispose ainsi d'un intérêt juridique à l'annulation ou à la modification de la décision attaquée et est habilitée à recourir au Tribunal fédéral.
2.
Dans une section de son mémoire de recours intitulée "Remarques liminaires", la recourante présente sa propre version des événements, en introduisant plusieurs éléments qui ne ressortent pas du jugement attaqué, sans toutefois démontrer en quoi la cour cantonale aurait arbitrairement omis de retenir ceux-ci (cf. art. 97 al. 1 LTF). Ce faisant, elle ne formule aucun grief recevable. Il en va de même concernant une section intitulée "Le défaut du joint et de la conduite des condensats", dans la mesure où la recourante se borne à reproduire des pans entiers de sa déclaration d'appel (cf. pièce 255/1 du dossier cantonal), cette manière de procéder ne répondant pas aux réquisits de motivation découlant des art. 42 al. 2 et 106 al. 2 LTF.
3.
La recourante conteste que l'action pénale fût prescrite à l'encontre des intimés.
3.1.
3.1.1. Pour les infractions punissables d'une peine privative de liberté de trois ans - telles que les lésions corporelles par négligence -, le délai de prescription est de dix ans (art. 97 al. 1 let. c CP, dans sa teneur en vigueur depuis le 1er janvier 2014; cf. RO 2013 4417). Dans sa teneur en vigueur au moment des faits reprochés aux intimés et jusqu'au 31 décembre 2013, l'art. 97 al. 1 let. c aCP prévoyait un délai de prescription de sept ans. En vertu du principe de la lex mitior (cf. art. 2 al. 2 et 389 CP; ATF 134 IV 82 consid. 6.2 p. 87 ss; 129 IV 49 consid. 5.1 p. 51), la prescription de l'action pénale la plus favorable aux intimés est applicable, à savoir sept ans.
Aux termes de l'art. 97 al. 3 CP (inchangé), la prescription ne court plus si, avant son échéance, un jugement de première instance a été rendu.
3.1.2. Selon l'art. 98 CP (inchangé), la prescription court dès le jour où l'auteur a exercé son activité coupable (let. a); dès le jour du dernier acte si cette activité s'est exercée à plusieurs reprises (let. b); dès le jour où les agissements coupables ont cessé s'ils ont eu une certaine durée (let. c).
La prescription ne court donc pas depuis le jour auquel se produit le résultat de l'activité coupable ou depuis la date de réalisation d'une condition objective. Il s'ensuit que des actes pénalement répréhensibles peuvent être atteints par la prescription avant qu'en survienne le résultat (ATF 134 IV 297 consid. 4.2 p. 300 et les références citées). Le début de la prescription coïncide donc, en matière de lésions corporelles par négligence, avec le moment où l'auteur a agi contrairement à ses devoirs de prudence ou, en cas de délit d'omission improprement dit, à partir du moment où le garant aurait dû agir; si ce devoir est durable, la prescription ne commence à courir qu'à partir du moment où les obligations du garant prennent fin (ATF 122 IV 61 consid. 2a/aa p. 63; arrêts 6B_315/2016 du 1er novembre 2016 consid. 2.2; 6B_90/2014 du 29 janvier 2015 consid. 6.2).
3.2. Concernant B._ (intimé 1), la cour cantonale a indiqué que le prénommé, en tant qu'installateur et collaborateur de C._ AG (intimée 2), devait s'assurer uniquement d'une bonne mise en service de l'installation vendue par son employeur, soit que les raccordements fussent correctement effectués et que la chaudière fût approvisionnée en mazout. Pour le reste, D._ avait appelé l'intimé 1 pour se rendre sur les lieux de l'accident en février 2012, de sorte que l'intéressé n'y était pas intervenu à la demande de son employeur, mais pour rendre un service dans le cadre de relations de bon voisinage, sans que cela ne créât pour lui une position de garant. En définitive, les seuls faits dont l'intimé 1 avait à répondre en sa qualité d'employé de l'intimée 2 s'étaient produits en juin 2011 et l'action pénale s'était prescrite avant le jugement de première instance du 4 septembre 2018.
S'agissant de l'intimée 2, l'autorité précédente a exposé qu'il lui était reproché, dans l'acte d'accusation, d'avoir accepté de livrer, en vue de son installation, une chaudière à mazout à condensation à D._, sans vérifier que ce dernier était habilité à installer des chauffages, sans exiger de son technicien qu'il contrôlât l'installation des conduites et - dans l'hypothèse où le joint aurait été pincé d'usine - sans procéder aux contrôles de qualité et de sécurité nécessaires à la fourniture d'une chaudière. L'installation de cet appareil avait eu lieu en juin 2011. Les accusations portées contre l'intimée 2 supposaient toutes que celle-ci aurait dû agir au moment de l'installation, que ce soit pour vérifier les aptitudes de D._ ou pour procéder aux contrôles adéquats au moment de la mise en fonction de la chaudière. L'intimée 2 n'avait plus de raison d'intervenir après la mise en service, cela d'autant que la chaudière avait fonctionné correctement après l'installation et que c'est avec D._ que le maître d'ouvrage, soit la recourante, était lié par un contrat d'entreprise. Partant, seul le prénommé devait veiller au bon fonctionnement de la chaudière. La cour cantonale a ajouté que, même à supposer durable, l'existence de certains devoirs de prudence incombant à l'intimée 2 n'avait pas été établie. On ne voyait pas pourquoi cette société aurait dû vérifier que D._ fût habilité à installer une chaudière à mazout à condensation, puisqu'aucune "habilitation" n'était exigée en la matière. Par ailleurs, le dernier nommé était associé-gérant d'une société ayant notamment pour but tous travaux liés aux installations sanitaires et de chauffage et se trouvait enregistré dans le fichier client de l'intimée 2 depuis 2006. Cette dernière n'avait donc eu aucune raison de refuser de donner suite à la commande de D._. Enfin, concernant le joint défectueux, l'instruction n'avait pas permis de déterminer si sa défectuosité avait résulté d'une mauvaise pose ou d'un problème d'usine, de sorte que cet aspect ne pouvait être reproché à l'intimée 2. Quant au mauvais contrôle de l'installation par le technicien de cette société, seul élément qui aurait pu en définitive être reproché à l'intimée 2, il concernait des faits qui ne justifiaient pas la condamnation pénale de la société puisque l'auteur était alors identifié.
3.3. La recourante commence par expliquer pourquoi les règles de l'art ont été violées lors de l'installation de la chaudière, ce qu'a bien retenu la cour cantonale en relevant que la pose d'un entonnoir aurait pu prévenir le risque d'obstruction de la conduite en raison du gel et ainsi éviter l'accident. Elle affirme ensuite que l'intimé 1 aurait violé les règles de l'art en matière d'installation de la chaudière en omettant de procéder aux vérifications de mise en service, en particulier en omettant de contrôler que le joint du condenseur fût bien positionné. La recourante en déduit que l'intimé 1 aurait occupé une "position de garant durable ayant engendré un risque dans le temps, à tout le moins jusqu'au jour de l'accident".
On peine à comprendre un tel raisonnement. En effet, à supposer que l'intimé 1 eût fautivement violé son devoir de prudence lors de la mise en service de la chaudière en juin 2011, une telle violation ne pouvait avoir pour effet de prolonger ses devoirs ou d'étendre son éventuelle position de garant. La recourante s'écarte de l'état de fait de la cour cantonale - par lequel le Tribunal fédéral est lié (cf. art. 105 al. 1 LTF) - lorsqu'elle affirme que l'intimé 1 aurait eu connaissance d'une quelconque défectuosité des joints de la chaudière lors de l'installation litigieuse. Par ailleurs, dès lors que l'intimé 1 est intervenu en juin 2011 en qualité d'employé de l'intimée 2, on ne perçoit pas en quoi le délai de prescription en matière de garantie des défauts de l'ouvrage dans le contrat d'entreprise (cf. art. 371 CO) pourrait influer sur les devoirs de l'intéressé, lequel n'était aucunement partie à un tel contrat.
Enfin, l'argument de la recourante, selon lequel l'omission fautive dont se serait rendu coupable l'intimé 1 aurait "engendré un risque dans le temps" qui aurait justifié de faire partir le délai de prescription de l'action pénale dès l'accident, ne saurait être suivi. Une telle conception de la prescription reviendrait à abandonner les principes établis par la jurisprudence en matière d'infractions commises par omission (cf. consid. 3.1.2 supra) et à s'écarter de la lettre de l'art. 98 let. a CP, pour faire - dans une telle situation - systématiquement courir celle-ci depuis le jour auquel se produit le résultat de l'activité coupable. En l'occurrence, on ne voit pas en vertu de quel principe l'intimé 1, en tant qu'employé de l'intimée 2, aurait dû agir postérieurement à l'installation et à la mise en service de la chaudière en juin 2011, quand bien même il aurait alors omis de procéder à des vérifications commandées par un devoir de prudence. Partant, la prescription de l'action pénale a bien été atteinte s'agissant des agissements de l'intéressé à cette époque.
3.4. La recourante prétend que l'intimé 1 aurait occupé une position de garant lors de son intervention sur la chaudière en février 2012. Son argumentation est irrecevable dans la mesure où elle repose sur de nombreux éléments qui ne ressortent pas de l'état de fait de la cour cantonale, dont l'intéressée ne prétend ni ne démontre qu'il aurait été établi de manière arbitraire (cf. art. 97 al. 1 LTF).
Pour le reste, la recourante soutient que l'intimé 1 ne serait pas intervenu comme l'aurait fait un voisin, mais en qualité de professionnel dans le domaine des installations de chauffage. Celui-ci aurait alors "fautivement répété son omission" en ne vérifiant pas la conduite et le joint de la chaudière. On ne voit cependant pas - et la recourante ne le précise pas - en quoi, alors qu'il avait été appelé par D._ pour contrôler la chaudière afin de rendre service à leur voisine, l'intimé 1 aurait été tenu d'agir - soit en particulier de procéder à toutes les vérifications nécessaires au moment de la mise en service d'une chaudière - en vertu de la loi, d'un contrat, d'une communauté de risques librement consentie ou de la création d'un risque (cf. art. 11 al. 2 CP; cf. aussi à cet égard ATF 141 IV 249 consid. 1.1 p. 251 s.). La cour cantonale n'a pas violé le droit fédéral en considérant que l'intimé 1 n'avait alors pas occupé une position de garant.
3.5. La recourante prétend encore que l'intimée 2 aurait occupé une "position de garant durable lors de l'accident". Elle admet qu'une telle position de garant n'avait pas de base contractuelle, mais soutient qu'elle découlerait de la "création d'un risque" inhérent à la mise sur le marché d'une chaudière.
A nouveau, l'argumentation de la recourante est irrecevable dans la mesure où elle consiste à affirmer, en s'écartant de l'état de fait de la cour cantonale par lequel le Tribunal fédéral est lié (cf. art. 105 al. 1 LTF), que l'intimée 2 aurait eu connaissance, à l'époque de l'installation de la chaudière, de problèmes liés aux joints.
Pour le reste, la recourante ne démontre aucunement en quoi une position de garant aurait pu perdurer au-delà de l'installation et de la mise en service de la chaudière, mais se borne à affirmer que la qualité du travail fourni par l'intimé 1 s'inscrivait "dans la durée". Or, on ne perçoit pas sur quelle base l'intimée 2 aurait dû spontanément, postérieurement à l'installation de juin 2011, se préoccuper du bon fonctionnement de la chaudière concernée. L'argument de la recourante selon lequel la vente d'une chaudière constituerait en soi la "création d'un risque" au sens de l'art. 11 al. 2 let. d CP, dont découlerait une position de garant, ne peut être suivi. En effet, il ne ressort pas du jugement attaqué que le fonctionnement d'une chaudière telle que celle installée chez la recourante créerait un risque permanent pour autrui. En outre, une telle manière de voir reviendrait à conférer à tout vendeur ou installateur d'un appareil une position de garant illimitée dans le temps, même en l'absence de toute maîtrise ou de toute intervention sur celui-ci. Partant, l'autorité précédente n'a pas violé le droit fédéral en estimant que l'intimée 2 n'avait pas occupé une position de garant vis-à-vis de la recourante postérieurement à l'installation de la chaudière en juin 2011.
Subsidiairement, la recourante soutient que l'intervention de l'intimé 1 en février 2012 aurait à nouveau placé l'intimée 2 dans une position de garant. Elle ne présente cependant aucune motivation spécifique à cet égard, de sorte que son grief ne répond pas aux exigences découlant de l'art. 42 al. 2 LTF. Au demeurant, on voit mal en quoi l'intervention de l'intimé 1 en dehors de toute consigne ou requête de l'intimée 2 aurait pu créer pour cette dernière une obligation d'agir au sens de l'art. 11 CP.
3.6. La recourante relève enfin que l'accusation reprochait aussi à l'intimée 2 de ne pas avoir instauré des procédures de contrôle du joint et de la conduite des chaudières installées. On ne voit cependant pas en quoi un éventuel défaut d'organisation au sein de l'intimée 2 - tel que dénoncé par la recourante - aurait pu conduire à retenir une omission fautive de celle-ci postérieurement à l'installation de la chaudière litigieuse en juin 2011.
3.7. Compte tenu de ce qui précède, la prescription de l'action pénale a bien été atteinte à l'égard des intimés. Le grief doit être rejeté dans la mesure où il est recevable.
4.
La recourante conclut à l'octroi de ses prétentions civiles sur la base de la condamnation des intimés. Dès lors qu'elle n'obtient pas une telle condamnation, le grief est sans objet.
5.
La recourante reproche à l'autorité précédente de l'avoir condamnée au paiement des frais judiciaires, des dépens des autres parties et de l'indemnité allouée à son conseil juridique gratuit pour la procédure d'appel.
5.1. Aux termes de l'art. 428 al. 1 CPP, les frais de la procédure de recours sont mis à la charge des parties dans la mesure où elles ont obtenu gain de cause ou succombé. La partie dont le recours est irrecevable ou qui retire le recours est également considérée avoir succombé. L'art. 425 CPP dispose que l'autorité pénale peut accorder un sursis pour le paiement des frais de procédure. Elle peut réduire ou remettre les frais compte tenu de la situation de la personne astreinte à les payer.
Selon l'art. 429 al. 1 let. a CPP, si le prévenu est acquitté totalement ou en partie ou s'il bénéficie d'une ordonnance de classement, il a droit à une indemnité pour les dépenses occasionnées par l'exercice raisonnable de ses droits de procédure.
L'art. 432 CPP dispose que le prévenu qui obtient gain de cause peut demander à la partie plaignante une juste indemnité pour les dépenses occasionnées par les conclusions civiles (al. 1). Lorsque le prévenu obtient gain de cause sur la question de sa culpabilité et que l'infraction est poursuivie sur plainte, la partie plaignante ou le plaignant qui, ayant agi de manière téméraire ou par négligence grave, a entravé le bon déroulement de la procédure ou a rendu celle-ci plus difficile peut être tenu d'indemniser le prévenu pour les dépenses occasionnées par l'exercice raisonnable de ses droits de procédure (al. 2). L'art. 432 CPP se conçoit à l'aune de l'art. 429 al. 1 let. a CPP, dont on déduit que les frais de défense relatifs à l'aspect pénal sont en règle générale supportés par l'Etat, en conséquence du principe selon lequel l'Etat assume la responsabilité de l'action pénale. L'art. 432 CPP représente toutefois, sur ce plan, un correctif voulu par le législateur pour tenir compte des situations dans lesquelles la procédure est menée davantage dans l'intérêt de la partie plaignante ou lorsque celle-ci en a sciemment compliqué la mise en oeuvre (ATF 141 IV 476 consid. 1.1 p. 479; 139 IV 45 consid. 1.2 p. 47 s.; arrêt 6B_369/2018 du 7 février 2019 consid. 3.1 non destiné à la publication). Ainsi, dans le cas où un acquittement a été prononcé en faveur du prévenu à l'issue d'une procédure complète devant des tribunaux au sens de l'art. 13 CPP, un tel correctif doit s'appliquer lorsque l'appel a été formé par la seule partie plaignante, puisqu'il n'y a alors plus aucune intervention de l'Etat tendant à la poursuite de la procédure en instance de recours. Dans une telle configuration, il est conforme au système élaboré par le législateur que ce soit la partie plaignante qui assume les frais de défense du prévenu devant l'instance d'appel (cf. ATF 141 IV 476 consid. 1.1 p. 479; 139 IV 45 consid. 1.2 p. 47 s.).
5.2. L'argumentation de la recourante est irrecevable dans la mesure où elle repose sur des éléments qui ne ressortent pas de l'état de fait de la cour cantonale, par lequel le Tribunal fédéral est lié (cf. art. 105 al. 1 LTF) et dont l'intéressée ne prétend ni ne démontre qu'il aurait été arbitrairement établi (cf. art. 97 al. 1 LTF).
Pour le reste, la recourante soutient que - au regard des lésions subies à la suite de l'accident du 7 février 2012, de la longueur de la procédure et du fait que le "risque de prescription" n'aurait jamais été évoqué jusqu'au jugement de première instance - "l'équité" commanderait de ne pas mettre de frais ni de dépens à sa charge pour la procédure d'appel. Cette argumentation ne permet pas de comprendre en quoi la cour cantonale aurait violé le droit fédéral (cf. art. 42 al. 2 LTF), en particulier au regard des art. 425 et 428 al. 1 CPP. La recourante n'explique pas davantage, au moyen d'un grief recevable, dans quelle mesure l'autorité précédente aurait pu violer le droit fédéral en mettant à sa charge l'indemnité allouée à son conseil juridique gratuit pour la procédure d'appel (cf. notamment les art. 135 al. 4 cum art. 138 al. 1 CPP; cf. aussi l'art. 30 al. 3 de la loi fédérale sur l'aide aux victimes d'infractions [LAVI; RS 312.5] et l'arrêt publié aux ATF 143 IV 154 consid. 2.3.5 p. 159 s'agissant de la portée de cette disposition dans les procédures de recours).
Au demeurant, après avoir libéré les intimés et D._ des chefs de prévention qui pesaient sur eux, le tribunal de première instance a laissé les frais judiciaires et mis les dépens à la charge de l'Etat. La procédure d'appel a, quant à elle, été provoquée par la seule recourante. A ce stade, celle-ci n'ignorait nullement la problématique de la prescription de l'action pénale, qui avait été évoquée par le tribunal de première instance et sur laquelle elle a - assistée d'un conseil juridique gratuit - développé ses griefs en toute connaissance de cause. On ne voit donc pas en quoi le jugement attaqué serait inéquitable sur l'aspect des frais et des dépens.
5.3. La recourante relève enfin que les intimés et D._ n'ont jamais demandé que leur indemnité pour les dépenses occasionnées par l'exercice raisonnable de leurs droits dans la procédure d'appel fût mis à sa charge. Elle en déduit qu'il serait exclu, au regard de l'art. 432 al. 1 CPP, de lui faire supporter les indemnités en question.
Il ressort effectivement du jugement attaqué que les intimés et D._ ont uniquement conclu, devant l'autorité d'appel, à l'octroi d'une indemnité à titre de l'art. 429 al. 1 let. a CPP.
Il apparaît cependant, à la lecture de la jurisprudence du Tribunal fédéral relative à l'art. 432 CPP, que, contrairement à ce qui ressort de la stricte lettre de la loi, il s'agit - lorsqu'un appel a été formé par la seule partie plaignante et que l'Etat n'intervient plus en vue de la poursuite de la procédure en instance de recours - de faire supporter à ladite partie plaignante les coûts d'une procédure qui résulte exclusivement de sa volonté, ce qui concorde avec l'approche retenue par le législateur en matière de frais de recours, lesquels - au vu de l'art. 428 CPP - doivent être mis à la charge de la partie qui succombe (cf. ATF 141 IV 476 consid. 1.1 p. 479; 139 IV 45 consid. 1.2 p. 47 s.). Partant, il convient d'admettre que l'Etat peut, dans une telle configuration, faire supporter à la partie plaignante l'indemnité due au prévenu pour ses dépens dans une procédure qu'il n'a nullement initiée, indépendamment des conclusions prises par celui-ci en la matière. Il n'appartient en effet pas au prévenu de choisir qui devra supporter l'indemnité qui lui est allouée pour les dépenses occasionnées par l'exercice raisonnable de ses droits dans la procédure d'appel.
5.4. Au vu de ce qui précède, le grief doit être rejeté dans la mesure où il est recevable.
6.
Le recours doit être rejeté dans la mesure où il est recevable. Comme il était dénué de chances de succès, la demande d'assistance judiciaire doit être rejetée (art. 64 al. 1 LTF). La recourante, qui succombe, supportera les frais judiciaires (art. 66 al. 1 LTF), dont le montant sera fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable. Les intimés, qui n'ont pas été invités à se déterminer, ne sauraient prétendre à des dépens.
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge de la recourante.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 29 mai 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa