- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有创建动态结构数组的波纹管代码。
#include
#include
#include
typedef struct
{
int flag;
char* ip;
} ip_mon;
định nghĩa kiểu cấu trúc {
ip_mon *array;
size_t nItems;
size_t size;
size_t block_size;
} item_list;
item_list* unsorted;
item_list* create_list(size_t block_size) {
item_list* pList = malloc(sizeof(item_list));
pList->array = (ip_mon *)malloc(block_size * sizeof(ip_mon));
pList->nItems = 0;
pList->size = block_size;
return pList;
}
void delete_list(item_list* pList) {
int i;
for(i=0; inItems; i++)
{
free(pList->array[i].ip);
}
free(pList->array);
free(pList);
}
void add_to_list(item_list* pList, char *word)
{
if (pList->nItems == pList->size)
{
pList->size *= 2;
pList->array = (ip_mon *)realloc(pList->array, pList->size * sizeof(ip_mon));
}
pList->array[pList->nItems].ip = strdup(word);
pList->nItems++;
}
int load_items(char *file, item_list* pList)
{
FILE *file_handle;
char nutt2[4096];
if((file_handle=fopen(file,"r"))==NULL) {
printf("[!] FATAL: Cannot open %s \n", file);
return -1;
} khác {
while (fgets(nutt2,sizeof(nutt2),file_handle)){
char *temp;
temp = strdup (nutt2);
temp = strtok (temp, "\n");
add_to_list(pList, temp);
free(temp);
} fclose(file_handle);
printf("[!] INFO: File %s loaded.\n", file);
return 1;
}
trả về 0;
}
int load_text(char *file)
{
FILE *filecheck;
if(unsorted != NULL){
delete_list(unsorted);
unsorted = create_list(2);
if(file != NULL){
if((filecheck=fopen(file,"r"))!=NULL)
load_items(file, unsorted);
else {
printf("file %s doesn't exists.\n", file);
return -1;
}
}
return 1;
} khác {
unsorted = create_list(2);
if(file != NULL){
if((filecheck=fopen(file,"r"))!=NULL)
load_items(file, unsorted);
else {
printf("file %s doesn't exists.\n", file);
return -1;
}
}
return 1;
}
trả về 0;
}
int show_list_items(item_list* pList){
int iterItem;
if(pList != NULL){
for (iterItem = 0; iterItem < pList->nItems; ++iterItem) {
printf("%s\n", pList->array[iterItem].ip);
}
return 1;
}
trả về 0;
}
int main(){
if(load_text("inf.txt")){
show_list_items(unsorted);
delete_list(unsorted);
}
trả về 0;
}
一切正常,但同时使用 valgrind 检查编译后的代码是否存在内存泄漏。我得到以下信息:
==2980== HEAP SUMMARY:
==2980== in use at exit: 568 bytes in 1 blocks
==2980== total heap usage: 11 allocs, 10 frees, 1,331 bytes allocated
==2980==
==2980== Searching for pointers to 1 not-freed blocks
==2980== Checked 69,344 bytes
==2980==
==2980== 568 bytes in 1 blocks are still reachable in loss record 1 of 1
==2980== at 0x4C2A29B: malloc (vg_replace_malloc.c:270)
==2980== by 0x4E9947A: __fopen_internal (iofopen.c:76)
==2980== by 0x400AB2: load_text (sort.c:98)
==2980== by 0x400B68: main (sort.c:122)
==2980==
==2980== LEAK SUMMARY:
==2980== definitely lost: 0 bytes in 0 blocks
==2980== indirectly lost: 0 bytes in 0 blocks
==2980== possibly lost: 0 bytes in 0 blocks
==2980== still reachable: 568 bytes in 1 blocks
==2980== suppressed: 0 bytes in 0 blocks
Tôi đang bỏ lỡ điều gì?
我试图避免双重释放,但似乎仍然有一个 block 仍然可以访问。
有什么想法或提示吗?
1 Câu trả lời
hiện hữu load_text()
中,
if((filecheck=fopen(file,"r"))!=NULL)
您在这里打开了文件,但没有fclose(file)
.
关于C 自由 malloc realloc 结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28689883/
Tôi đang cố gắng tạo một mảng chứa các mục int[][] tức là int version0Indexes[][4] = { {1,2,3,4}, {5,6,7,8} }; int version1Indexes[
Tôi có một mảng các số nguyên: private int array[]; Nếu tôi cũng có một phương thức gọi là add, thì sự khác biệt giữa: public void add(int value) { array[value
Khi bạn cố gắng thêm một mảng vào một mảng khác trong JavaScript, nó sẽ chuyển đổi mảng đó thành một chuỗi. Thông thường khi thực hiện việc này bằng ngôn ngữ khác, các danh sách sẽ được hợp nhất. JavaScript [1, 2] + [3, 4] = "
Theo hướng dẫn tôi đang đọc, nếu bạn muốn tạo một bảng có 5 cột và 3 hàng để biểu diễn dữ liệu như thế này... 45 4 34 99 56 3 23 99 43 2 1 1 0 43 67 ...nó nói rằng bạn có thể sử dụng như sau
Tôi thường viết tập lệnh/chương trình bằng Python nhưng gần đây tôi bắt đầu lập trình bằng JavaScript và gặp một số vấn đề khi làm việc với mảng. Trong python, khi tôi tạo một mảng và sử dụng for x in y, tôi nhận được
Tôi có một mảng như thế này: temp = [ 'data1', ['data1_a','data1_b'], ['data2_a','data2_b','data2_c'] ]; // Tôi muốn sử dụng toStr
rent_property (tên bảng) id fullName propertyName 1 A House Name1 2 B
Câu hỏi này đã có câu trả lời ở đây: Đã đóng cách đây 13 năm. Có thể trùng lặp: Trong mảng C tại sao điều này lại đúng? a[5] == 5[a] mảng[chỉ số] và
Sử dụng Excel 2013. Bài đăng đầu tiên của tôi sau nhiều năm tìm kiếm và chỉnh sửa. Tôi đang cố gắng khớp người dùng ứng dụng hiện tại (tức là "John Smith") với địa chỉ email "jsmith@work.com" của anh ấy. Sử dụng hai
apply dường như không lắp ráp lại mảng 3D khi chỉ hoạt động trên một lề. Hãy xem xét: arr 1), nhưng tôi vẫn thấy lạ rằng nếu một hàm trả về một đối tượng có kích thước, thì về cơ bản chúng sẽ bị bỏ qua. Câu trả lời tốt nhất là điều này hơi vô lý
Tôi có cơ sở dữ liệu MySQL chứa tọa độ GPS. Đây là một phần mã PHP của tôi để lấy tọa độ; $sql = "SELECT lat, lon FROM gps_data"; $stmt=$db->query
Tôi cần tìm cách thực hiện thao tác này trong đó tôi có một mảng có dạng [batch_size, 150, 1] biểu diễn các chuỗi số nguyên batch_size, mỗi chuỗi dài 150 phần tử, nhưng trong mỗi chuỗi có rất nhiều số 0 được thêm vào để tất cả các chuỗi có cùng một
Tôi phải lấy văn bản thông qua json trong url. Hệ thống phân cấp như sau: đối tượng > mảng > đối tượng > mảng > đối tượng. Tôi muốn lấy văn bản bằng mã này. Nhưng tôi nhận được lỗi: org.json.JSONException: Không có giá trị
nhập mã ở đây- (void)viewDidLoad { NSMutableArray *imageViewArray = [[NSMutableArray alloc] init];
Bạn có biết cách thực hiện thao tác cắt trên mảng chuỗi 2 chiều, chẳng hạn như 3x3 và thu thập lại thành mảng 3x3 có cùng kích thước bằng cách sử dụng Java Stream API không? Vấn đề là tránh sử dụng vòng lặp for rõ ràng. Giải pháp hiện tại chỉ đơn giản là thực hiện một fo
Đã đóng. Sự cố này cần có thông tin chi tiết để gỡ lỗi. Hiện tại không chấp nhận câu trả lời. Chỉnh sửa câu hỏi để bao gồm hành vi mong muốn, một vấn đề hoặc lỗi cụ thể và
Tôi có đầu ra XML sau từ Dịch vụ Web ASP.NET: 1710 1711 1712 1713
Nếu tôi có một đối tượng todo như một phần của trạng thái của bạn và đối tượng đó chứa một mảng danh sách, bên trong danh sách có các đối tượng và bên trong các đối tượng đó có một mảng listItems khác. Làm thế nào để cập nhật đối tượng có id "poi098" trong mảng listItems
Tôi muốn đóng gói một mảng bool có độ dài tối đa là 8 vào một byte, gửi nó qua mạng rồi giải nén lại thành một mảng bool. Đã thử một số giải pháp ở đây nhưng không có hiệu quả. Tôi đang sử dụng mono. Tôi đã tạo BitArray, và sau đó thử
Chúng tôi có trường này trong cơ sở dữ liệu biểu thị cờ đúng/sai cho mỗi ngày trong tuần, như thế này: '1111110' Tôi cần chuyển đổi giá trị này thành một mảng boolean. Để thực hiện điều này, tôi đã viết đoạn mã sau: char[] freqs = weekday
Tôi là một lập trình viên xuất sắc, rất giỏi!