In lạiTác giả: Vũ trụ không gianThời gian cập nhật: 2023-11-04 03:29:13274
Tôi hiện đang tìm hiểu cách hoạt động của quản lý bộ nhớ động, cụ thể hơn là realloc và cách thực hiện trong các hàm.
Trong chương trình bên dưới, tôi chỉ đang cố gắng sử dụng malloc để phân bổ một số số trong hàm a() và sau đó chuyển chúng sang hàm b() khác. Trong b() tôi chuyển địa chỉ của con trỏ tới c() để bộ nhớ được phân bổ lại kích thước gấp đôi và được khởi tạo bằng một số.
Bây giờ quay lại câu hỏi của tôi: tại sao kết quả đầu ra trong hàm b() hiển thị các số chính xác nhưng không hiển thị trong hàm chính? Không phải con trỏ "số" trong main cũng trỏ đến bộ nhớ được phân bổ lại sao?
Cảm ơn trước.
Mã số:
#include #include
#xác định KÍCH THƯỚC 3
int a(int **số); int b(int *số); int c(int **số);
int main() { int *số = NULL;
a(&số);
for(size_t i = 0; i < 2 * SIZE; i++) printf("Trong main sau a: %i\n", number[i]);
b(số);
for(size_t i = 0; i < 2 * SIZE; i++) printf("Trong main sau b: %i\n", number[i]);
for(size_t i = 0; i < 2 * SIZE; i++) printf("Trong b sau c: %i\n", number[i]);
return 0; }
int c(int **số) { int *n_new = realloc(*số, 2 * SIZE * sizeof(số)); nếu(!n_new) { miễn phí(n_new); return -1; }
for(size_t i = 0; i < 2 * SIZE; i++) n_new[i] = i * 2;
*số = n_new;
return 0; }
Đầu ra:
Trong chính sau a: 0 Trong chính sau a: 1 Trong chính sau a: 2 Trong chính sau a: 0 Trong chính sau a: 0 Trong chính sau a: 0 Trong b sau c: 0 Trong b sau c: 2 Trong b sau c: 4 Trong b sau c: 6 Trong b sau c: 8 Trong b sau c: 10 Trong chính sau b: 0 Trong chính sau b: 0 Trong chính sau b: 2 Trong chính sau b: 0 Trong chính sau b: 0 Trong chính sau b: 0
câu trả lời hay nhất
Bạn cũng cần chuyển từng con trỏ tới b(). Hiện tại, hãy gọi b(con trỏ) không thể sửa đổi chủ yếu() con trỏ trong . gọi với a(&con trỏ) Thực hiện theo cách tương tự.
Ngoài ra, đừng gọi một con trỏ mà bạn biết là null miễn phí()(khi malloc thất bại). Nó không làm gì cả.
Tôi sẽ sử dụng một trong các ví dụ về đồng bộ hóa Vulkan làm tài liệu tham khảo về cách xử lý các bộ đệm thống nhất được cập nhật không thường xuyên. Cụ thể, tôi đang xem xét điều này: vkBeginCommandBuffer(...);
Kiến thức của tôi về git còn hạn chế. Tôi đã tạo nhánh B1 từ master, thực hiện một số chỉnh sửa và cam kết với nhánh này. Tôi muốn tạo một nhánh B2 khác từ B1, tôi đã thực hiện một số chỉnh sửa trong B2 và tôi cũng muốn cam kết B2 (chứa
Đây là những gì tôi đã làm, tôi đã tạo một nhánh abc. Sau đó tôi tạo hai tệp văn bản one.txt và two.txt. Sau đó tôi cam kết chúng với chi nhánh abc. Sau đó, tôi xóa tệp one.txt khỏi nhánh và chuyển những thay đổi này sang nhánh. Hiện nay
Trong nhánh chính của tôi, tôi có 2 tệp: file1.txt file2.txt và từ đó tôi tạo một nhánh mới có tên b1. Trong b1, tôi đã sửa đổi file2.txt và vô tình xóa file1.txt (khỏi đĩa, khi tôi
Tôi mới làm quen với git. Tôi đã tạo một nhánh, thực hiện các thay đổi và bây giờ tôi muốn hợp nhất lại thành nhánh chính để biến chúng thành "vĩnh viễn". Vì vậy, tôi đã thực thi git merge 1.2 được báo cáo là đã cập nhật và được thực thi trên master
Tôi đang ở trong một nhóm mới và cách chúng tôi làm việc hoàn toàn khác so với những gì tôi đã từng làm, chúng tôi làm việc trên các nhánh tính năng, những người thử nghiệm sẽ kiểm tra trên nhánh tính năng đó và sau đó chúng tôi sẽ chạy một công việc jenkins sẽ đăng nhập khi tính năng này được ký bởi các bài kiểm tra. Chức năng này được hợp nhất vào quá trình phát triển, root
Tôi hiện đang tìm hiểu cách hoạt động của quản lý bộ nhớ động, cụ thể hơn là realloc và cách thực hiện trong các hàm. Trong chương trình bên dưới, tôi chỉ đang cố gắng sử dụng malloc để phân bổ một số số trong hàm a() và sau đó chuyển chúng sang hàm khác
Làm cách nào để gửi từ một luồng khác trở lại luồng UI chính trong Java? Tôi đang sử dụng một trình thực thi có Runnable để thực hiện một số công việc bên ngoài luồng giao diện người dùng chính và tôi có một giao diện để có thể vượt qua
Tôi có một dự án bằng git, mọi thứ được thực hiện trực tiếp trên nhánh chính và các thẻ được sử dụng để đánh dấu các phiên bản phát hành của mã. Tôi biết điều này không lý tưởng và đã xem xét các quy trình git như: http://nvie.com/posts
Chúng tôi có kho lưu trữ GIT khá lớn và tôi muốn xóa các nhánh chưa bao giờ được hợp nhất trở lại chủ. Điều ngược lại cũng tốt - một cách để liệt kê tất cả các nhánh đã được sáp nhập vào nhánh chính tại một thời điểm nào đó. Trước tiên tôi muốn có được một
Tôi chưa bao giờ cộng tác trước đây và bây giờ tôi thấy mình cần chia sẻ dự án này với một số người khác mặc dù tôi sẽ thực hiện 90% công việc phát triển. Tôi có một kho lưu trữ riêng trên github. Tôi đã đẩy nguồn ban đầu của mình bằng git push hoặc
Dự án của chúng tôi sử dụng Gitlab và chúng tôi có hai nhánh tồn tại lâu dài: dev và master, tương tự như Git Flow. Chúng tôi đang sử dụng phương thức "hợp nhất cam kết" để tạo một cam kết hợp nhất trong nhánh chính. Tuy nhiên, do
Tôi có câu hỏi về thuộc tính liên kết của Chế độ xem tùy chỉnh. Thuộc tính này được liên kết với NSArrayController của thực thể dữ liệu cốt lõi. Vấn đề là thế này: Theo quan điểm của tôi, tôi vẽ một số hình chữ nhật. Vị trí của các hình chữ nhật này được lưu trong Core Data
Điều này có vẻ quá khó để tôi thực hiện chính xác. Tôi có TreeMap và tôi đang nhận được các bản đồ con trong đó: public static reqObjsignObj(reqObj vArg, i
Tôi đang sử dụng phiên bản Angular js 1.3.4 và sử dụng ui-select. Tôi đang liên kết một mảng đối tượng JSON đa cấp phức tạp với ui-select này và nó hoạt động tốt. Vì vậy người dùng có thể chọn bất kỳ
Tôi đang xây dựng API bằng WebAPI và đã sử dụng NLog để ghi nhật ký trong toàn bộ ngăn xếp. Giải pháp API của tôi có hai dự án chính, bao gồm: chính lớp trang web triển khai Bộ điều khiển và nội dung webapi
Trong Git, cho trước (1) một nhánh A và (2) một nhánh B đã được tách ra từ A vào một thời điểm nào đó trong quá khứ và sau đó sáp nhập lại vào A, làm cách nào tôi có thể tìm thấy tất cả các cam kết trong A bây giờ có nguồn gốc từ B? Mục đích là để xác định rằng chúng ta hiện đang ở A
Tôi là một lập trình viên xuất sắc, rất giỏi!