- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Allocator conceptVà std::allocator_traits不要说当分配失败时 allocate
会做什么——它会返回 nullptr 还是抛出异常?
当我使用标准分配器 API 编写容器时,我应该
检查返回值并捕获không ngoại trừ
版本成员函数中的异常(例如đẩy_lùi
, resize
...) ;
检查返回值,在异常抛出处抛出失败
这样无论抛出与否,我都会得到正确的行为。
câu trả lời hay nhất
C++ 标准的草案 n4659 在 23.10.9 说默认分配器 [default.allocator](强调我的):
23.10.9.1 allocator members [allocator.members]
...T* allocate(size_t n);
2 Returns: A pointer to the initial element of an array of storage of size n * sizeof(T), aligned appropriately for objects of type T.
3 Remarks: the storage is obtained by calling ::operator new (21.6.2), but it is unspecified when or how often this function is called.
4 Throws: bad_alloc if the storage cannot be obtained.
它清楚地表明,如果标准分配器无法分配存储空间,它将引发一个 bad_alloc
异常。
以上是标准分配器。 20.5.3.5 分配器要求 [allocator.requirements] 和表 31 — 分配器要求包含:
a.allocate(n) [Return type:] X::pointer [Assertion/note/ pre-/post-condition]Memory is allocated for n objects of type T but objects are not constructed. allocate may throw an appropriate exception
我的理解是allocate
只有在分配内存后才能返回。因此,如果无法分配内存,分配器应该抛出一个适当的异常(不一定是 bad_alloc
,即使它非常合适)。
关于c++ - 分配失败时 C++ allocator::allocate 应该抛出还是返回 nullptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50326564/
Tôi có một ứng dụng gửi GKSession và tạo GKSession mới trong nhiều điều kiện khác nhau (hết thời gian kết nối, lỗi phiên, v.v.). Tuy nhiên, tôi đang gặp phải tình trạng rò rỉ bộ nhớ và đôi khi nó gặp sự cố sau một vài vòng kết nối lại.
Ví dụ: tôi có một con trỏ dấu phẩy động float *p trong mã máy chủ. Tôi có thể xác định loại bộ nhớ (thiết bị/máy chủ) mà nó trỏ tới không? Câu trả lời hay nhất là trong hệ thống UVA, hàm API thời gian chạy cudaPointerGetAttri
Tôi đã chuyển đổi dự án sang .Net 4.0 và đoạn mã sau không hoạt động: typeof(RuntimeTypeHandle).GetMethod("Allocate", BindingFlags.Instance
Khi mình khai báo char ch = 'ab' thì ch chỉ chứa 'b', sao nó không lưu 'a'? #include int main() { char ch = 'ab'; printf("%c"
Tôi có một câu hỏi về Disk Sector và Block. Một cung là một đơn vị, thường là 512 byte hoặc 1k, 2k, 4k, v.v. tùy thuộc vào phần cứng. Kích thước khối hệ thống tệp là một tập hợp các kích thước cung. Giả sử tôi đang lưu trữ 5KB
Giả sử tôi có 8 người và 5000 quả táo. Tôi muốn chia tất cả số táo cho cả 8 người để tôi không có quả táo nào. Nhưng cách tốt nhất để phân phối tất cả là gì khi mỗi người sẽ nhận được số tiền khác nhau? Đây là cách tôi bắt đầu: hãy để mọi người
Trang web tôi đang xây dựng có thanh tìm kiếm ở trên cùng. Tương tự như Trello hay Gmail, tôi muốn khi người dùng nhấn phím "/", tiêu điểm của họ sẽ chuyển đến hộp tìm kiếm. JavaScript của tôi trông như thế này: document.onk
Tôi có một đoạn mã nhỏ: if (PZ_APP.dom.isAnyDomElement($textInputs)){ $textInputs.on("focus", function(){
Tôi đã quan sát hành vi sau đây. Hai biến thuộc tính được chấp nhận. @property (không nguyên tử, giữ lại) NSString *stringOne; @property (không nguyên tử, gán
Tôi đang giải quyết một vấn đề như thế này - triển khai một hàm đánh giá một biểu thức bao gồm các toán hạng sau: "(", ")", "+", "-", "*", "/". Mỗi biểu thức số trong có thể lớn (lớn bằng chuỗi được biểu thị bằng 1000 bit). "/
Tôi có một tập hợp các máy chủ và một tập hợp các nhiệm vụ. Mỗi máy chủ đều có dung lượng cpu, mem và tác vụ, đồng thời mỗi tác vụ đều có yêu cầu về cpu và mem. Mỗi máy chủ thuộc một lớp độ trễ và có thể giao tiếp với các máy chủ khác với các giá trị độ trễ cụ thể. Mỗi tác vụ có thể cần kết thúc bằng một giá trị bằng hoặc
Chương trình này làm gì: Đọc một ma trận (mảng hai chiều) chứa các hàng nrRows và các cột nrColomns từ một tệp. Tất cả các phần tử của ma trận đều là số nguyên nằm trong khoảng [0,100). Chương trình phải sắp xếp lại tất cả các phần tử trong ma trận sao cho mỗi phần tử bằng
Thế giới! Tôi có một câu hỏi. Hôm nay tôi đang cố gắng tạo một mã có thể tìm số Catalan. Nhưng trong chương trình của tôi nó có thể là những con số dài. Tôi đã tìm thấy tử số và mẫu số. Nhưng tôi không thể chia các số dài! Ngoài ra, chương trình này chỉ được sử dụng thư viện chuẩn. Xin hãy giúp tôi. đây là mã của tôi
Tôi chắc chắn rằng mình thiếu điều gì đó hiển nhiên nhưng tôi muốn tạo một phiên bản của con trỏ NSInteger trong Mục tiêu C. -(NSInteger*) getIntegerPointer{ NSInteger
Câu hỏi này đã có câu trả lời ở đây: Sự khác biệt giữa self.ivar và ivar? (4 câu trả lời) Đã đóng 9 năm trước.
Làm cách nào tôi có thể gán v[i] cho một phạm vi số nguyên (loại của v là vectơ) mà không điền nó ban đầu? int i[] = {1, 2, 3, 4,
Tôi đang tìm sự trợ giúp cho một bài tập....Tôi mang bài tập này đến trường...Tôi phải viết chương trình để tải một ma trận G và một ma trận G thứ hai và tìm kiếm sự tồn tại của ma trận G thứ hai. Đếm số thứ nhất Ma trận G...nhưng khi tôi cố chạy
Tôi phải quản lý tài nguyên. Về cơ bản, nó là một số duy nhất xác định kết nối Lớp 2 trong một bộ chuyển mạch. Có thể có 16k kết nối như vậy, vì vậy mỗi khi người dùng muốn định cấu hình một kết nối, họ cần chỉ định một chỉ mục duy nhất. Tương tự, khi người dùng muốn xóa kết nối, tài nguyên (số
Có quy ước đặt tên chung nào để phân biệt các chuỗi được phân bổ và không được phân bổ không? Những gì tôi đang tìm kiếm hy vọng là một cái gì đó tương tự như Mã US/S có vẻ sai khi làm sai, nhưng tôi muốn sử dụng những thứ thông thường hơn là tự mình làm. tối ưu
Tôi cần đọc tệp .txt và gán từng từ trong tệp vào một cấu trúc được trỏ từ một vectơ cấu trúc. Tôi sẽ giải thích nó tốt hơn dưới đây. Cảm ơn sự giúp đỡ của bạn. Chương trình của tôi chỉ phân bổ từ đầu tiên của tệp... Tôi biết vấn đề là ở hàm i
Tôi là một lập trình viên xuất sắc, rất giỏi!