1969年1月、トゥイッケナム・スタジオで、レコーディングとドキュメンタリー映画の撮影を兼ねたゲット・バック・セッションが始まる。だがレコーディングの過程でメンバー間の不和が増大。ポールとジョージが衝突し、ジョージが一時離脱する。ミーティングの上でジョージは復帰を承諾するものの、トゥイッケナムでの続行に不満が提起され、サビル・ロウに新しく作られたスタジオに移動する。ジョージの提案でビリー・プレストンをセッション・プレイヤーとして招聘してセッションを再開したが、結局この時点ではアルバムリリースには至らず、次回作と発売順が入れ替わる結果となる。1月30日、映画のラストで使用された屋上でのライヴパフォーマンス（ルーフトップ・コンサート）を敢行するが、警察が苦情を申し立てて中断になる。その後、アップル・コアの財政が危機に陥り、マネージャーの決定を巡ってメンバー間で対立が起こる。ポールは恋人のリンダ・イーストマンの父リー・イーストマンを推したが、他の3人はアラン・クレインを推した。3月12日にポールがリンダと結婚。同日、ジョージの家を警察がマリファナ所持の容疑で捜索。同月20日、かねてから愛人関係にあったジョンとヨーコ（小野洋子）がジブラルタルで結婚式を挙げる。4月、アビー・ロード・スタジオにてアルバム『アビイ・ロード』の録音を開始（発売は9月）。音楽雑誌『ローリング・ストーン』1969年9月号に、ビートルズが同年2月から5月（アルバム『アビイ・ロード』セッションが始まる直前）に『ホット・アズ・サン』というタイトルのアルバム・セッションを行ったという記事が掲載されたが後に誤報と判明している。8月8日午前10時頃に『アビイ・ロード』の写真撮影が行われる。当日は暑かったためポールはスーツにサンダル履きという姿で現場に出向いており、実際にサンダルを履いて横断歩道を渡るカットも撮影された。22日、ジョンの新しい私邸にて全員が揃った最後の写真撮影が行われる。9月、ジョンとヨーコが結成したプラスティック・オノ・バンドがカナダのトロントでコンサートを行う。ジョージはメンバーに誘われたが辞退し、エリック・クラプトンがギタリストとして参加した。ジョンが帰英した後の9月末、アップルで今後の活動に関する会議が行われた「小規模なギグからコンサートを再開したい」というポールの提案にジョンが「お前はアホか。俺は辞める」と述べた。しかしアラン・クレインはジョンの脱退意向を公表しなかった。1970年4月10日にポールがビートルズ脱退を表明し、ビートルズは事実上解散となった。4月17日にポールはソロアルバム『マッカートニー』を発売。5月8日にフィル・スペクターのプロデュースでゲット・バック・セッションでの録音をまとめたアルバム『レット・イット・ビー』が発売される。
単純な例として、関数内で一時的な作業領域として配列を動的確保することを考える。単純な方法では、以下のようにnew[]演算子を使用する。void function1A(size_t count) {    double* array1 = NULL;    double* array2 = NULL;    try {        // 配列を動的に確保する。メモリ確保失敗により std::bad_alloc 例外がスローされる可能性がある。        array1 = new double[count]();        array2 = new double[count]();        // 動的に確保した配列をここで作業領域として使用する。        for (size_t i = 0; i < count; ++i) {            array1[i] = i * 0.1;            array2[i] = i * 0.1;        }        // ...        // 配列を使わなくなったので削除する。        delete[] array2;        delete[] array1;    }    catch (...) {        // 例外がスローされる場合に備える。        delete[] array2;        delete[] array1;        throw; // 例外の再送出。    }}これはC言語のmallocおよびfree関数による原始的な寿命管理手法に近い。もし動的に確保したメモリを削除する前に関数を抜けるとメモリリークしてしまうため、慎重に削除処理をひとつひとつ記述していく必要がある。動的にメモリ管理するオブジェクトの数が増えるにつれ、ソースコードのメンテナンスコストは増大していく。一方、RAIIを利用した場合は以下のようになる。// RAII を実現する配列ラッパークラス。template<typename T> class ArrayWrapper {    size_t m_count;    T* m_data;public:    ArrayWrapper() : m_count(), m_data() {}    explicit ArrayWrapper(size_t count) : m_count(count), m_data(new T[count]()) {}    ~ArrayWrapper() { delete[] m_data; }    size_t count() const { return m_count; }    T* data() { return m_data; }    const T* data() const { return m_data; }    T& operator[](size_t index) { return m_data[index]; }    const T& operator[](size_t index) const { return m_data[index]; }    // コピーは禁止とする。所有権の移動もサポートしない。private:    ArrayWrapper(const ArrayWrapper&);    ArrayWrapper& operator=(const ArrayWrapper&);};void function1B(size_t count) {    ArrayWrapper<double> array1(count);    ArrayWrapper<double> array2(count);    // 動的に確保した配列をここで作業領域として使用する。    for (size_t i = 0; i < count; ++i) {        array1[i] = i * 0.1;        array2[i] = i * 0.1;    }    // ...} // RAII 変数 array1, array2 の属するブロックを抜ける。このとき array2, array1 の各デストラクタが順に呼ばれ、それぞれが内部で管理する配列メモリ領域は自動的に破棄される。Boost C++ライブラリのboost::scoped_arrayを使う場合は以下のように書ける。#include <boost/scoped_array.hpp>void function1C(size_t count) {    boost::scoped_array<double> array1(new double[count]());    boost::scoped_array<double> array2(new double[count]());    for (size_t i = 0; i < count; ++i) {        array1[i] = i * 0.1;        array2[i] = i * 0.1;    }}C++11以降のstd::unique_ptrを使う場合は以下のように書ける。#include <memory>void function1D(size_t count) {    std::unique_ptr<double[]> array1(new double[count]());    std::unique_ptr<double[]> array2(new double[count]());    for (size_t i = 0; i < count; ++i) {        array1[i] = i * 0.1;        array2[i] = i * 0.1;    }}RAIIを使ってメモリ管理する場合、明示的な削除処理の記述が必要なくなり、コードの見通しやメンテナンス性が向上する。関数の途中でreturnしたり、例外がスローされたりする場合でも、後始末を自動的に実行してくれる。また、C++のテンプレートを利用することで、任意の型に対するRAIIを実現するラッパークラスを定義することができる。C++の標準テンプレートライブラリ (STL) には、RAIIの概念をもとに実装された汎用的な動的配列のクラステンプレートとして、std::vectorが用意されている。