cuốn sách gpt4 ai đã làm

Các phương thức ảo C++ tăng EXC_BAD_ACCESS (chỉ khi được gọi bởi Objective-C++)

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 07:52:06 hai mươi bốn 4
mua khóa gpt4 Nike

Là một phần của cơ sở mã rất lớn, tôi có những điều sau:

lớp FooObserver {
public:
khoảng trống ảo FooObjectChanged() = 0;
};

lớp MainStuff : FooObserver công khai {
public:
/* ... */
void FooObjectChanged();
void doS Something();
};

void MainStuff::doSomething() {
cái này->FooObjectChanged();
FooObserver *o = this;
o->FooObjectChanged();
}

void MainStuff::FooObjectChanged() {
std::cout << "đối tượng đã thay đổi\n";
}

Sự hiểu biết của tôi về tiêu chuẩn C++ là đây là mã hợp lệ khi doS Something() Khi chạy,FooObjectChanged() sẽ được gọi hai lần mà không có bất kỳ lỗi nào.

Nhưng ứng dụng của tôi không thành công ở cuộc gọi thứ hai. (Sử dụng segfault, hay chính xác hơn là EXC_BAD_ACCESS trên iOS)

Một vấn đề trình biên dịch khác là nếu tôi loại bỏ MainStuff::FooObjectChanged()(phần thân và phần khai báo của nó), tôi cho rằng trình liên kết sẽ thất bại với lời nhắc lớp trừu tượng. Nhưng trình biên dịch không bị lỗi. Nó liên kết và sau đó chương trình gặp sự cố trong lần gọi đầu tiên đến chức năng ảo

libc++abi.dylib: Hàm ảo thuần túy được gọi!

Chuyện gì đang xảy ra vậy? Điều gì có thể gây ra những vấn đề này? FooObserver Không phải là lớp cơ sở cho bất kỳ đối tượng nào khác, chỉ Nội dung chính lớp cơ sở.

câu trả lời hay nhất

  1. 检查 Nội dung chính Có hàm ảo thuần túy nào khác được kế thừa từ các lớp cơ sở khác và bạn không có bất kỳ hàm nào không? Nội dung chính độ che phủ trung bình
  2. Kiểm tra xem doS Something có được gọi trên một đối tượng hợp lệ ở trạng thái sự kiện và trong phạm vi hay không (sau khi gọi và xử lý MainStuff::doSomething() vẫn chưa bị phá hủy)

Về các phương thức ảo C++ tăng EXC_BAD_ACCESS (chỉ khi được gọi bởi Objective-C++), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/26600258/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress