2013-04-07 36 views
5

Mã của tôi:realloc: không hợp lệ kích thước tiếp theo, phát hiện bởi glibc

 
int args_size = 5; 
char** args; 

args = (char**) malloc(sizeof(char*) * args_size); 

// ... 

args = (char**) realloc(args, sizeof(char*) * (args_size += 5)); 

Tôi muốn tăng kích thước bằng 5.

Nhưng tôi nhận được lỗi này:

 
*** glibc detected *** ./a.out: realloc(): invalid next size: 0x0000000000a971c0 *** 

tôi biết rằng một biến temp bắt realloc là tốt, nhưng chỉ để đơn giản ...

+0

'macro-> args' là gì? – cnicutar

+0

@cnicutar arrrr aorry Tôi đã sửa nó. – Sam

+0

không truyền sự trở lại của 'malloc'. lập trình các hiệu ứng phụ với '+ =', argh. –

Trả lời

5

SOLVED

Ban đầu, kích thước của args là 5 yếu tố. Khi chương trình đang điền args, nó đã thêm nhầm phần tử vào nó và sau đó gọi realloc.

Điều đó gây ra lỗi được đề cập trong câu hỏi.

Vấn đề được giải quyết bằng cách loại bỏ các lỗi, bằng cách làm theo ý kiến ​​của WhozCraig, Jens Gustedt và những người khác ...

Nhờ tất cả!