How to resolve malloc_error_break?
I'm encountering this error with the iOS 3.0 simulator, but not on the 3.1.3 and 3.2 simulators.
After creating a symbolic breakpoint on malloc_error_break, I'm seeing this in the log:
[Session started at 2010-02-13 19:15:22 +0700.]
2010-02-13 19:15:24.405 iPortals[21656:207] bool for 1
iPortals(21656,0xa0089500) malloc: *** error for object 0x285e000: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
iPortals(21656,0xa0089500) malloc: *** error for object 0x2850000: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
iPortals(21656,0xa0089500) malloc: *** error for object 0x286c000: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
iPortals(21656,0xa0089500) malloc: *** error for object 0x287c000: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
here is my code
@implementation WebViewController
@synthesize myWebView;
@synthesize AppDelegate;
@synthesize mybanner;
@synthesize request;
- (void)dealloc
{
    //NSLog(@"WebViewController has been dealloc");
    myWebView.delegate = nil;
    self.myWebView = nil;
    [self.myWebView release];
    [super setView:nil];
    [myWebView release];
    myWebView = nil;
    request = nil;
    [mybanner release];
    [super dealloc];
}
- (void)setView:(UIView *)aView
{
    //NSLog(@"setView:(UIView *)aView");
    if (aView == nil) {
        self.myWebView = nil;
    }    
    [super setView:aView];
}
- (void)action {
    AppDelegate = nil;
    AppDelegate = [[UIApplication sharedApplication] delegate];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:AppDelegate.PushLink]];
}
- (void)didReceiveMemoryWarning {
    //NSLog(@"didReceiveMemoryWarning: view = %@, superview = %@", [self valueForKey:@"_view"], [[self valueForKey:@"_view"] superview]);
    [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
    // Release anything that's not essential, such as cached data
    [[NSURLCache sharedURLCache] removeAllCachedResponses];
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    //NSLog(@"viewDidLoad: view = %@", self.view);
    self.title = NSLocalizedString(@"iPortals", @"");
    //UIBarButtonItem *customItem = [[UIBarButtonItem alloc] initWithTitle:@"Item" style:UIBarButtonItemStyleBordered   target:self action:@selector(action];
    //self.navigationController.toolbar setItems: = [[UIBarButtonItem alloc] initWithTitle:@"[...]" style:UIBarButtonItemStyleBordered target:self action:@selector(action)];
    /*
    UIBarButtonItem *emailButton = [[UIBarButtonItem alloc]
                                    initWithImage:[UIImage imageNamed:@"icon.png"]
                                    style:UIBarButtonItemStylePlain target:self
                                    action:@selector(action)];
    self.toolbarItems = [NSArray arrayWithObjects:emailButton, nil];
    [emailButton release];
    //*/
    AppDelegate = nil;
    AppDelegate = [[UIApplication sharedApplication] delegate];
    //NSLog(@"777777777 %@",AppDelegate.PushLink);
    /*
    CGRect webFrame = [[UIScreen mainScreen] applicationFrame];
    webFrame.origin.y += kTopMargin + 5.0开发者_JAVA技巧;  // leave from the URL input field and its label
    webFrame.size.height = 400;
    //webFrame.size.height -= 40.0;
    self.myWebView = nil;
    //*/
    //self.myWebView = [[[UIWebView alloc] initWithFrame:webFrame] autorelease];
    self.myWebView.backgroundColor = [UIColor grayColor];
    self.myWebView.scalesPageToFit = YES;
    self.myWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
    self.myWebView.delegate = self;
    [self.view addSubview: self.myWebView];
    self.mybanner.backgroundColor = [UIColor clearColor];
    [self.view addSubview: self.mybanner];
    /*
    CGRect textFieldFrame = CGRectMake(kLeftMargin, kTweenMargin,
                                       self.view.bounds.size.width - (kLeftMargin * 2.0), kTextFieldHeight);
    UITextField *urlField = [[UITextField alloc] initWithFrame:textFieldFrame];
    urlField.borderStyle = UITextBorderStyleBezel;
    urlField.textColor = [UIColor blackColor];
    urlField.delegate = self;
    urlField.placeholder = @"<enter a URL>";
    urlField.text = AppDelegate.PushLink;
    urlField.backgroundColor = [UIColor whiteColor];
    urlField.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    urlField.returnKeyType = UIReturnKeyGo;
    urlField.keyboardType = UIKeyboardTypeURL;  // this makes the keyboard more friendly for typing URLs
    urlField.autocapitalizationType = UITextAutocapitalizationTypeNone; // don't capitalize
    urlField.autocorrectionType = UITextAutocorrectionTypeNo;   // we don't like autocompletion while typing
    urlField.clearButtonMode = UITextFieldViewModeAlways;
    [urlField setAccessibilityLabel:NSLocalizedString(@"URLTextField", @"")];
    [self.view addSubview:urlField];
    [urlField release];
     */
    request = nil;
    request = [NSURLRequest requestWithURL:[NSURL URLWithString:AppDelegate.PushLink]
                               cachePolicy:NSURLRequestUseProtocolCachePolicy
                           timeoutInterval:60.0];
    [self.myWebView loadRequest:request];
}
// called after the view controller's view is released and set to nil.
// For example, a memory warning which causes the view to be purged. Not invoked as a result of -dealloc.
// So release any properties that are loaded in viewDidLoad or can be recreated lazily.
//
- (void)viewDidUnload
{
    [super viewDidUnload];
    // release and set to nil
    [self.myWebView release];
    self.myWebView = nil;
}
-(BOOL)canBecomeFirstResponder {
    //NSLog(@"canBecomeFirstResponder ");
    return YES;
}
-(void)viewDidAppear:(BOOL)animated {
    //NSLog(@"viewDidAppear ");
    [self becomeFirstResponder];
}
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    //NSLog(@"overrideoverrideoverrideoverrideoverrideoverrideoverrideoverride ");
    if ( event.subtype == UIEventSubtypeMotionShake )
    {
        // Put in code here to handle shake
        AppDelegate = nil;
        AppDelegate = [[UIApplication sharedApplication] delegate];
        [AppDelegate ToggleNavigationBar];
        [AppDelegate playsound:1];
        [self setAdHide:AppDelegate.toggle];
    }
}
- (void)setAdHide:(BOOL)hide {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.6];
    if (!hide) {
        if (current == UIInterfaceOrientationLandscapeLeft || current == UIInterfaceOrientationLandscapeRight) {
            [mybanner setFrame:CGRectMake(0, 272, mybanner.frame.size.width, mybanner.frame.size.height)];
        }
        else {
            [mybanner setFrame:CGRectMake(0, 432, mybanner.frame.size.width, mybanner.frame.size.height)];
        }
    }
    else {
        [self restoreAd];
    }
    [UIView commitAnimations];
}
- (void)restoreAd {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.6];
    [mybanner setFrame:CGRectMake(0, 0, mybanner.frame.size.width, mybanner.frame.size.height)];    
    [UIView commitAnimations];
}
#pragma mark -
#pragma mark UIViewController delegate methods
- (void)viewWillAppear:(BOOL)animated
{
    self.myWebView.delegate = nil;
    self.myWebView.delegate = self; // setup the delegate as the web view is shown
}
- (void)viewWillDisappear:(BOOL)animated
{
    //[self.myWebView removeFromSuperview];
    [self.myWebView stopLoading];   // in case the web view is still loading its content
    self.myWebView.delegate = nil;  // disconnect the delegate as the webview is hidden
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
    current = interfaceOrientation;
    [self restoreAd];
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIDeviceOrientationPortrait) ||
            (interfaceOrientation == UIInterfaceOrientationLandscapeRight));
}
// this helps dismiss the keyboard when the "Done" button is clicked
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    [self.myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[textField text]]]];
    return YES;
}
#pragma mark -
#pragma mark UIWebViewDelegate
- (void)webViewDidStartLoad:(UIWebView *)webView
{
    // starting the load, show the activity indicator in the status bar
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    // finished loading, hide the activity indicator in the status bar
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    // load error, hide the activity indicator in the status bar
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    // report the error inside the webview
    //NSString* errorString = [NSString stringWithFormat:
    //                       @"<html><center><font size=+5 color='red'>An error occurred:<br>%@</font></center></html>",
    //                       error.localizedDescription];
    //[self.myWebView loadHTMLString:errorString baseURL:nil];
    //URLCacheAlertWithError(error);
}
@end
Follow the recommendation in the log message: set a breakpoint in malloc_error_break. When the breakpoint fires, look at the backtrace in Xcode (or use the bt command on the gdb command-line) and see where you're calling free, or API that uses free.
Memory use issues are sometimes discoverable using the Xcode static analyzer - choose "Build and Analyze" from the Xcode build menu.
You seem to be repeatedly trying to dealloc your pointers. In the dealloc method ONLY call [blah release]; and in the viewDidUnload method assign your pointers a nil value. Do not do BOTH in both methods.
- (void)dealloc
{
    [self.myWebView release];
    [mybanner release];
    [super dealloc];
}
- (void)viewDidUnload
{
    [super viewDidUnload];
    self.myWebView = nil;
}
You seem to be missing a few variables as well.
This may seem completely unrelated, but with a similar error, what worked for me was to repair the disk permissions.
- Open Disk Utility app -> Repair Disk Permissions
- Restart the computer
I got this suggestion from Mac Terminal - 'pointer being freed was not allocated' error when opening terminal
Also, I realize that the question is 6 years old, so it's unlikely to be useful to the original asker. I hope this answer helps other people with similar errors.
Amazingly, what solved it for me was to shut down and turn back on the debug device. Oh, Apple...
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论