- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
例如,我可以通过以下方式分配内存时的情况:
Position* arr1 = new Position[5];
Position 是我程序中的一个类,它描述了具有 x 和 y 值的位置点。
堆栈上会有一个指向堆上数组“arr1”的第一个元素(位置对象)的指针,所以它看起来像这样:
如果我要创建一个指针数组,它会是什么样子?例如:
Position** arr2 = new Position* [2];
arr[0] = new Position(3, 7); // Constructs a point with x and y values.
arr[1] = new Position(9,6);
在我的第二个例子中,内存中存储的所有指针和对象都在哪里?堆栈上是否有指针指向堆上的指针,然后指向堆上的对象或其他东西?
此外,如果我要delete [] arr2;
,对象将保留在内存中的什么地方?
Cảm ơn.
câu trả lời hay nhất
mới
创建的每个对象都在堆上。所以在你的例子中,两个指针的数组将在堆上。 arr2
,作为局部变量,将在堆栈上。Position
对象由mới
单独分配,位于它们自己单独的堆 block 中。它们需要单独xóa bỏ
。否则,它们将保留在堆上。对象不能在栈和堆之间移动。 (虽然 C++11 提供了 std::move
,但这实际上是一种特殊的所有权转移;它不会神奇地将堆地址变成堆栈地址。)delete [] arr2
会将对象留在内存中。由于指针数组不拥有引用的对象,因此此代码不会要求销毁间接引用的对象。您应该始终避免直接使用 mới
Và delete
以支持容器对象(std::vector
hoặc std::array
可以在这里工作)或智能指针,例如 duy nhất_ptr
Và chia sẻ_ptr
。
关于c++ - 对象指针数组的内存结构(可视化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8936997/
Tôi hiện đang cố gắng xây dựng một từ điển dựa trên bảng băm. Logic là: có một cấu trúc tên là HashTable với các nội dung sau: HashFunc HashFunc; PrintFunc PrintEntry;
Nếu tôi có một con trỏ tới một cấu trúc/đối tượng và cấu trúc/đối tượng đó chứa hai con trỏ khác tới các đối tượng khác và tôi muốn xóa đối tượng chứa hai con trỏ này mà không hủy các con trỏ mà nó giữ - Tôi phải làm điều này như thế nào? Con trỏ tới đối tượng A (chứa con trỏ tới đối tượng
Mã giống như gói này main import "fmt" type Hello struct { ID int Raw string } type World []*Hell
Tôi có một tệp CSV có định dạng sau: Mô-đun, Chủ đề, Chủ đề phụ. Nó cần có khả năng được nhập vào cơ sở dữ liệu MySQL với định dạng sau: CREATE TABLE `modules` ( `id
Thông thường tôi sử dụng một cái gì đó như copy((uint8_t*)&POD, (uint8_t*)(&POD + 1 ), back_inserter(rawData)); copy((uint8_t*)&PODV
Lỗi: Việc kết hợp chỉ có thể được thực hiện trên các bảng có loại cột tương thích. cấu trúc (lớp: chuỗi, skyward_number: chuỗi, skyward_points: chuỗi) <> cấu trúc (skyward_number: chuỗi, lớp: ký tự
Tôi có một loạt các con trỏ tới các cấu trúc và tôi đang cố gắng sử dụng chúng trong vòng lặp while. Tôi không hoàn toàn tự tin về cách khởi tạo nó một cách chính xác, nhưng tôi luôn làm điều này: Entry *newEntry = malloc(sizeof(Entry)
Tôi đang học C và câu hỏi của tôi có thể ngu ngốc nhưng tôi bối rối. Trong một hàm như thế này: int afunction(somevariables) { if (someconditions)
Hiện tại tôi đang thực hiện một nhiệm vụ lập trình và tôi thực sự chưa hiểu đầy đủ về liên kết vì chúng tôi chưa đề cập đến nó. Nhưng tôi cảm thấy cần nó để làm những gì tôi muốn, vì mảng không đủ nên tôi tạo cấu trúc như sau struct node { float coef;
Cho đoạn mã sau: #include #include #define MAX_SIZE 15 typedef struct{ int touchs;
struct contact list[3]; int checknullarray() { for(int x=0;x<10;x++) { if(strlen(con
Câu hỏi này đã có câu trả lời ở đây: Đã đóng 11 năm trước. Có thể trùng lặp: Vòng lặp “for” trống trong Facebook ajax AJAX gọi gì
Tôi vừa duyệt một tệp trong bộ phản xạ và thấy điều này trong hàm tạo cấu trúc: this = new Binder.SyntaxNodeOrToken(); Ai đó có thể giải thích cách bài tập này hoạt động trong C# không?
Tôi thường sử dụng các hằng chuỗi, ví dụ: DICT_KEY1 = 'DICT_KEY1' DICT_KEY2 = 'DICT_KEY2' ... nhiều khi tôi không quan tâm các chữ thực tế là gì miễn là chúng là duy nhất và con người có thể đọc được
Tôi mới sử dụng C và tôi không hiểu tại sao đoạn mã sau không hoạt động: typedef struct{ uint8_t a; uint8_t* b;
Bạn có thể tạo một cấu trúc hoạt động giống như một trong các lớp dựng sẵn, nơi bạn có thể gán giá trị trực tiếp mà không cần gọi thuộc tính không? Tiền thân: Số lượng RoundedDouble = 5;
Đây là mã của tôi: #include typedef struct { const char *description; int age;
Tôi nghĩ R có cấu trúc đặt tên hữu ích cho các thành phần danh sách khi tạo danh sách lồng nhau. Tôi có một danh sách các danh sách và muốn áp dụng một hàm cho mọi vectơ có trong bất kỳ danh sách nào. lapply thực hiện điều này nhưng sau đó loại bỏ cấu trúc đặt tên của danh sách. Làm cách nào để áp dụng các cột lồng nhau
Tôi đang tạo một công cụ sắp xếp cá nhân cho mục đích học tập và tôi chưa bao giờ làm việc với XML nên tôi không chắc liệu giải pháp của mình có phải là giải pháp tốt nhất hay không. Đây là cấu trúc cơ bản của tệp XML tôi đính kèm:
Tôi chưa quen với khái niệm nosql nên khi bắt đầu học PouchDB, tôi đã tìm thấy bảng chuyển đổi này. Sự nhầm lẫn của tôi là, PouchDB hoạt động như thế nào nếu tôi có thể nói rằng tôi có nhiều bảng, điều đó có nghĩa là tôi cần tạo nhiều cơ sở dữ liệu? Bởi vì theo tôi trong bagdb
Tôi là một lập trình viên xuất sắc, rất giỏi!