В вашем случае вы создаете массив в стеке, и как только вы покинете область действия, массив будет освобожден. Вместо этого создайте динамически выделенный массив и верните указатель на него.
char * returnArray(char *arr, int size) {
char *new_arr = malloc(sizeof(char) * size);
for(int i = 0; i < size; ++i) {
new_arr[i] = arr[i];
}
return new_arr;
}
int main() {
char arr[7]= {1,0,0,0,0,1,1};
char *new_arr = returnArray(arr, 7);
// don't forget to free the memory after you're done with the array
free(new_arr);
}
Популярный способ «взлома кеша» - добавить параметр в исходный код css. Обычно используется временная метка. Я предпочитаю время последнего изменения файла, т.е. filemtime ()
в PHP. Я уверен, что есть функция asp.net, которая даст вам это.
Тогда ваш тег CSS станет:
<link rel="stylesheet" type="text/css" media="screen" href="/main.css?123456789"/>
с изменением параметра запроса при каждом обновлении файла CSS.
Нажмите CTRL + F5 , чтобы полностью обновить все на вашей веб-странице, включая скрипты и таблицы стилей.
Кроме того, вы можете включить таблицы стилей, которые будут обслуживаться, со страницы динамического сервера [php / asp.net] и Response.Expires = -1, что заставит клиента явно загружать css при каждом запросе HTTP-GET. Вы также можете сделать это в настройках вашего веб-сервера для типов MIME CSS.
Я не уверен во всех браузерах, но в IE8 вы можете использовать инструменты разработчика ...
Перейти к:
Инструменты -> Инструменты разработчика (F12)
Затем (пока на вашей странице) в Инструментах разработчика:
Кэш -> Всегда обновлять с Сервер
Для ASP.NET код позади (вы можете поместить это в служебный класс или главную страницу):
public static string GetTimestampedUrl(string virtualPath)
{
var realPath = HostingEnvironment.MapPath(virtualPath);
var file = new FileInfo(realPath);
return VirtualPathUtility.ToAbsolute(virtualPath) + "?" + file.LastWriteTime.ToFileTime();
}
А затем на вашей странице:
<link href="<%= GetTimestampedUrl("~/screen.css") %>" rel="stylesheet" type="text/css" media="screen" />
Для пользователей Wordpress ниже приведен код
<link rel="stylesheet" href="<?php echo get_bloginfo('stylesheet_url')."?d=".date( 'Ymd', time()); ?>" type="text/css" media="screen" />
Или лучше
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); echo '?' . filemtime( get_stylesheet_directory() . '/style.css'); ?>" type="text/css" media="screen, projection" />
Приветствия!
Чтобы продолжить ответ Яна Кемпа , в котором используется LastWriteTime
рассматриваемой таблицы стилей, я написал помощник MVC для вывода тега <link>
со встроенным параметром очистки кэша.
Код
public static class CssLinkHelper
{
public static IHtmlString StyleSheet(this HtmlHelper helper, string stylesheetname)
{
// define the virtual path to the css file (see note below)
var virtualpath = "~/" + stylesheetname;
// get the real path to the css file
var realpath = HostingEnvironment.MapPath(virtualpath);
// get the file info of the css file
var fileinfo = new FileInfo(realpath);
// create a full (virtual) path to the css file including a cache busting parameter (e.g. /main.css?12345678)
var outputpath = VirtualPathUtility.ToAbsolute(virtualpath) + "?" + fileinfo.LastWriteTime.ToFileTime();
// define the link tag for the style sheet
var tagdefinition = string.Format("<link rel=\"stylesheet\" type=\"text/css\" href=\"{0}\" />", outputpath);
// return html string of the tag
return new HtmlString(tagdefinition);
}
}
Использование
@Html.StyleSheet("main.css")
Выход
<link rel="stylesheet" type="text/css" href="/main.css?131393346850223541" />
Заметка
Если вас интересует часть var virtualpath = "/~" + ...
и вы думаете, почему бы просто не передать ее как "~/main.css"
? Я реализовал эту функцию таким образом, потому что все мои CSS-файлы находятся в общей папке (/ assets), и помощник будет префикс моего вывода с общим именем папки, т.е. /assets/main.css?131393346850223541
Держите ли вы браузер открытым между изменениями? Часто простое закрытие всех окон браузера между внесением изменений в файл CSS указывает браузеру загрузить новую копию.
Один из приемов - добавить параметр QueryString в ссылку на вашу таблицу стилей
Самый простой способ - отключить кеширование в вашем браузере. Если вы не можете или не хотите этого делать, вы можете нажать ctrl + f5.
Возможно, ваш сервер или приложение asp также кэширует. Вы можете отключить это в web.config или перезапустить сервер разработки, чтобы убедиться, что последняя версия вашего файла показана пользователю.
Я использую этот трюк:
<link rel="stylesheet" type="text/css" href="cssfile.css?t=<%= DateTime.Now.Ticks %>" media="screen" />
Это классическая проблема. У вас есть множество доступных решений: