小编Roz*_*uur的帖子

当试图释放由堆管理器分配的内存时会发生什么,它分配的内容超过了要求?

我在接受采访时问了这个问题.

假设char*p = malloc(n)分配多于n,比如分配N个字节的内存,free(p)用于释放分配给p的内存.

堆管理器可以执行这样的错误分配吗?现在发生了什么,将释放n个字节或释放N个字节?

有什么方法可以找到释放多少内存?

编辑

有什么方法可以找到释放多少内存?

有总比没有好,

mallinfo()可以像"Fred Larson"所指出的那样轻松一些

c c++ heap malloc free

8
推荐指数
1
解决办法
755
查看次数

在mvc中进行身份验证并重定向到silverlight,如何访问经过身份验证的用户?

我是silverlight的新手,正在研究mvc中托管的silverlight应用程序.用户将登录aspx页面/ LogOn,并将被重定向到silverlight应用程序或其他视图.要在silverlight中访问已登录用户,请在mvc中添加身份验证服务.

app.xaml.cs基于RIA服务中的启用身份验证进行了修改

    public App()
    {
        this.Startup += this.Application_Startup;
        this.Exit += this.Application_Exit;
        this.UnhandledException += this.Application_UnhandledException;

        InitializeComponent();

        WebContext webcontext = new WebContext
                                    {
                                        Authentication = new FormsAuthentication()
                                    };
        this.ApplicationLifetimeObjects.Add(webcontext);
        WebContext.Current.Authentication.LoadUser().Completed += 
            (s, e) => MessageBox.Show(WebContext.Current.User.Name);
    }
Run Code Online (Sandbox Code Playgroud)

这种方法不起作用,因为消息框显示为空

c# asp.net silverlight asp.net-mvc forms-authentication

5
推荐指数
1
解决办法
645
查看次数

编写Console.Out到不同的输出文件

我试图使用重定向Console.Out到两个文本文件Console.SetOut.

Console.SetOut(File.CreateText("c:\\del1.txt"));
Console.WriteLine(string1);
...
Console.SetOut(File.CreateText("c:\\del2.txt"));
Console.WriteLine(string2);
Run Code Online (Sandbox Code Playgroud)

通过此重定向,可以创建两个文本文件,而不包含任何数据.如果我注释掉第二个重定向,这工作正常.如何使用输出将输出重定向到不同的文件Console.SetOut.

Edit1:程序终止没有任何错误,这是否可以保证所有文件流都被关闭和刷新?

编辑2:感谢每一位回复了我的问题的人,我能够找到解决方案,不用更改代码并添加两行来关闭文件流. Console.Out.Close();

任何人都可以解释为什么程序终止后文件流没有关闭和刷新?

c# stdout

3
推荐指数
1
解决办法
2713
查看次数

子串指标

我是F#的新手。我编写了一个函数,该函数返回目标中子字符串匹配索引的数组,其类似于我在C#中的编写方式。

有没有更实用的方法来解决此问题,并且可以在不使用任何可变变量的情况下解决该问题?

let SubStringIndices (haystack:string) (needle:string) =
    let mutable indices = System.Collections.Generic.List<int>()
    let mutable index = haystack.IndexOf(needle)
    while index >= 0 do
        indices.Add(index)
        index <- haystack.IndexOf(needle, index+1)
    indices.ToArray()

printfn "%A" (SubStringIndices  "abaabababaaab" "ab")
// prints [|0; 3; 5; 7; 11|]
Run Code Online (Sandbox Code Playgroud)

我不是在寻找一种在每个索引处检查子字符串是否匹配的解决方案。

f# substring

2
推荐指数
1
解决办法
1069
查看次数

malloc()的奇怪行为

试着理解我的问题的答案

当试图释放由堆管理器分配的内存时会发生什么,它分配的内容超过了要求?

我写了这个函数,并对其输出感到困惑

int main(int argc,char **argv){
  char *p,*q;
  p=malloc(1); 
  strcpy(p,"01234556789abcdefghijklmnopqrstuvwxyz"); //since malloc allocates atleast 1 byte
  q=malloc(2);
  //    free(q);
  printf("q=%s\n",q);
  printf("p=%s\n",p);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

产量

q=vwxyz
p=01234556789abcdefghijklm!
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释这种行为吗?或者这个实现是否具体?

如果free(q)被取消注释,我也会收到SIGABRT.

c heap malloc free

1
推荐指数
2
解决办法
2853
查看次数

标签 统计

c ×2

c# ×2

free ×2

heap ×2

malloc ×2

asp.net ×1

asp.net-mvc ×1

c++ ×1

f# ×1

forms-authentication ×1

silverlight ×1

stdout ×1

substring ×1